জাভাস্ক্রিপ্ট ট্রিম স্ট্রিং?


1303

আমি কীভাবে জাভাস্ক্রিপ্টে একটি স্ট্রিং ছাঁটাই করব?


290
এই প্রশ্নটি জিজ্ঞাসা করার দু'বছর পরে উল্লেখযোগ্য যে স্ট্রিং.ট্রিম () মূলত জাভাস্ক্রিপ্ট ১.৮.১ / ইসকামাস্ক্রিপ্ট ৫ এ যুক্ত হয়েছিল, এতে সমর্থিত: ফায়ারফক্স ৩.৫+, ক্রোম / সাফারি 5+, আই 9 + (কেবলমাত্র স্ট্যান্ডার্ড মোডে!) দেখুন scunliffe এর উত্তর: stackoverflow.com/a/8522376/8432
wweicker

46
String.trim()নোড.জেএস-এর বাক্সের বাইরেও কাজ করে
ব্র্যাড

47
নিটপিক থেকে: String.trim()শ্রেণি পদ্ধতিটি ES5 / Node.js তে বিদ্যমান নেই; পরিবর্তে, String.prototype.trim()উদাহরণ পদ্ধতিটি বিদ্যমান। ব্যবহার:, ' foo '.trim()না String.trim(' foo ')
সম্মুখভাগবিউটি

39
ওএমজি, এটি ২০১৩ এবং আইপি 9 এর কমপ্যাট মোডে স্ট্রিংয়ের কোনও ট্রিম () পদ্ধতি নেই!
dbrin

80
জিকুয়েরিতে উল্লেখযোগ্য যে $.trim(str)সর্বদা উপলব্ধ।
সিগমোরাল

উত্তর:


893

IE9 + থেকে সমস্ত ব্রাউজারে trim()স্ট্রিংয়ের পদ্ধতি রয়েছে।

ঐ ব্রাউজার যারা সমর্থন করে না জন্য trim(), আপনার কাছ থেকে এই polyfill ব্যবহার করতে পারেন MDN :

if (!String.prototype.trim) {
    (function() {
        // Make sure we trim BOM and NBSP
        var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
        String.prototype.trim = function() {
            return this.replace(rtrim, '');
        };
    })();
}

তাই বলা হয়, ব্যবহার করা হয় তবে jQuery, $.trim(str)পাওয়া যায় এবং হ্যান্ডলগুলি undefined / নাল।


এটা দেখ:

String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g, '');};

String.prototype.ltrim=function(){return this.replace(/^\s+/,'');};

String.prototype.rtrim=function(){return this.replace(/\s+$/,'');};

String.prototype.fulltrim=function(){return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,'').replace(/\s+/g,' ');};

87
জিকুয়েরিতে উল্লেখযোগ্য যে $.trim(str)সর্বদা উপলব্ধ।
সিগমোরাল

481

আপনি যদি ইতিমধ্যে সেই কাঠামোটি ব্যবহার করেন তবে jQuery থেকে ট্রিমটি সুবিধাজনক।

$.trim('  your string   ');

আমি প্রায়শই jQuery ব্যবহার করি, তাই এর সাথে স্ট্রিমগুলি ছাঁটাই করা আমার পক্ষে স্বাভাবিক। তবে এটি সম্ভব যে সেখানে jQuery এর বিরুদ্ধে প্রতিক্রিয়া আছে? :)


1
এটি কেবল সাদা স্পেস (নিউলাইন) ছাঁটাই করে .. এটি পিএইচপি ট্রিমের মতো কাজ করে না, যেখানে আপনি অক্ষরগুলিও ছাঁটাতে পারেন
জেফজ

jQuery 3.5.0 তাদের ট্রিম পদ্ধতি অবমূল্যায়ন করেছে।
হারবার্ট পিটারস

165

সেখানে সঠিক উত্তরের একটি গুচ্ছ উপরে হয় যদিও, এটা উল্লেখ করা উচিত যে Stringজাভাস্ক্রিপ্ট বস্তুর একটি নেটিভ হয়েছে .trim()পদ্ধতি হিসাবে এর নাম ECMAScript 5 । সুতরাং আদর্শভাবে ট্রিম পদ্ধতির প্রোটোটাইপ করার যে কোনও প্রয়াস এটি ইতিমধ্যে বিদ্যমান কিনা তা দেখতে সত্যই পরীক্ষা করা উচিত।

if(!String.prototype.trim){  
  String.prototype.trim = function(){  
    return this.replace(/^\s+|\s+$/g,'');  
  };  
}

নেটিভ এ যুক্ত: জাভাস্ক্রিপ্ট 1.8.1 / ECMAScript 5

এইভাবে সমর্থিত:

ফায়ারফক্স: 3.5+

সাফারি: 5+

ইন্টারনেট এক্সপ্লোরার: আইই 9 + (কেবলমাত্র স্ট্যান্ডার্ড মোডে!) Http://blogs.msdn.com/b/ie/archive/2010/06/25/enhanced-scriptting-in-ie9-ecmascript-5-support-and-more .aspx

ক্রোম: 5+

অপেরা: 10.5+

ইসমাস্ক্রিপ্ট 5 সমর্থন সারণী: http://kangax.github.com/es5-compat-table/




29

আমি জানি এই প্রশ্নটি তিন বছর আগে জিজ্ঞাসা করা String.trim()হয়েছিল ow এখন, জাভাস্ক্রিপ্টে নেটিভ যুক্ত করা হয়েছিল an উদাহরণস্বরূপ, আপনি নিম্নলিখিত হিসাবে সরাসরি ট্রিম করতে পারেন,

document.getElementById("id").value.trim();

3
এই সংস্করণগুলিতে কাজ করবে না, আপনি যদি পারেন তবে jQuery মেথড $ .Trim (স্ট্র) ব্যবহার করুন
বেন টালিওডোরোস

22

আপনি যদি jQuery ব্যবহার করেন তবে jQuery.trim()ফাংশনটি ব্যবহার করুন । উদাহরণ স্বরূপ:

if( jQuery.trim(StringVariable) == '')

20

ফ্ল্যাগ্র্যান্ট বাদাসেরির 11 টি ট্রিম রয়েছে বেঞ্চমার্কের তথ্য সহ:

http://blog.stevenlevithan.com/archives/faster-trim-javascript

অ-আশ্চর্যজনকভাবে রিজেক্সপ-ভিত্তিক traditionalতিহ্যগত লুপের চেয়ে ধীর।


এই আমার ব্যক্তিগত এক। এই কোডটি পুরানো! আমি এটি জাভাস্ক্রিপ্ট 1.1 এবং নেটস্কেপ 3 এর জন্য লিখেছি এবং এটি কেবল সামান্য আপডেট হয়েছে। (মূল ব্যবহৃত স্ট্রিং.কমের্যাট)

/**
 *  Trim string. Actually trims all control characters.
 *  Ignores fancy Unicode spaces. Forces to string.
 */
function trim(str) {
    str = str.toString();
    var begin = 0;
    var end = str.length - 1;
    while (begin <= end && str.charCodeAt(begin) < 33) { ++begin; }
    while (end > begin && str.charCodeAt(end) < 33) { --end; }
    return str.substr(begin, end - begin + 1);
}

14

দেশীয় জাভাস্ক্রিপ্ট পদ্ধতি ব্যবহার করুন: String.trimLeft(), String.trimRight(), এবং String.trim()


String.trim()IE9 + এবং অন্যান্য সমস্ত বড় ব্রাউজারে সমর্থিত :

'  Hello  '.trim()  //-> 'Hello'


String.trimLeft()এবং String.trimRight()মানহীন, তবে আইই ব্যতীত সমস্ত বড় ব্রাউজারগুলিতে সমর্থিত

'  Hello  '.trimLeft()   //-> 'Hello  '
'  Hello  '.trimRight()  //-> '  Hello'


পলিফিলের সাহায্যে IE সমর্থনটি সহজ:

if (!''.trimLeft) {
    String.prototype.trimLeft = function() {
        return this.replace(/^\s+/,'');
    };
    String.prototype.trimRight = function() {
        return this.replace(/\s+$/,'');
    };
    if (!''.trim) {
        String.prototype.trim = function() {
            return this.replace(/^\s+|\s+$/g, '');
        };
    }
}

1
@ ব্র্যাড ট্রু, তবে তাদের এখনও ব্রাউজারের প্রশস্ত সমর্থন রয়েছে। এবং পলিফিল কোনও অসঙ্গতিগুলির যত্ন নেয়।
ওয়েব_ডিজাইনার

1
আপনার উত্তর মুছে ফেলার কথা বিবেচনা করা উচিত। এটি ইতিমধ্যে অন্য উত্তরগুলি দ্বারা ইতিমধ্যে 5x এর বেশি আচ্ছাদিত হয়নি এমন কিছু যুক্ত করে না।
ব্র্যাড

4
@ ব্র্যাড আমি কারও উল্লেখ trimLeftবা দেখিনি trimRight
ওয়েব_ডিজাইনার

1
@ ব্র্যাড আমি যখন উপলভ্য তখন স্থানীয় জাভাস্ক্রিপ্ট বাস্তবায়ন পছন্দ করি। এই উত্তরটি তার নিজস্ব lTrim()এবং rTrim()পদ্ধতিগুলি তৈরি করে।
ওয়েব_ডিজাইনার

1
@ ব্র্যাড এগুলি মানহীন এখনও কিছু ব্রাউজার এখনও তাদের সমর্থন করে, সুতরাং সেই ব্রাউজারগুলিতে পলিফিল তৈরি করার দরকার নেই।
ওয়েব_ডিজাইনার

11
String.prototype.trim = String.prototype.trim || function () {
    return this.replace(/^\s+|\s+$/g, "");
};

String.prototype.trimLeft = String.prototype.trimLeft || function () {
    return this.replace(/^\s+/, "");
};

String.prototype.trimRight = String.prototype.trimRight || function () {
    return this.replace(/\s+$/, "");
};

String.prototype.trimFull = String.prototype.trimFull || function () {
    return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g, "").replace(/\s+/g, " ");
};

ম্যাট ডিউরেগ থেকে নির্লজ্জভাবে চুরি ।



7

কৌণিক জেএস প্রকল্পের ট্রিম কোড

var trim = (function() {

  // if a reference is a `String`.
  function isString(value){
       return typeof value == 'string';
  } 

  // native trim is way faster: http://jsperf.com/angular-trim-test
  // but IE doesn't have it... :-(
  // TODO: we should move this into IE/ES5 polyfill

  if (!String.prototype.trim) {
    return function(value) {
      return isString(value) ? 
         value.replace(/^\s*/, '').replace(/\s*$/, '') : value;
    };
  }

  return function(value) {
    return isString(value) ? value.trim() : value;
  };

})();

এবং এটি হিসাবে কল trim(" hello ")


5

সহজভাবে কোড ব্যবহার করুন

var str = "       Hello World!        ";
alert(str.trim());

ব্রাউজার সমর্থন

Feature         Chrome  Firefox Internet Explorer   Opera   Safari  Edge
Basic support   (Yes)   3.5     9                   10.5    5       ?

পুরানো ব্রাউজারের জন্য প্রোটোটাইপ যুক্ত করুন

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}

অন্যের সাথে তুলনা হিসাবে ব্যাখ্যা করার সর্বোত্তম উপায় b তবে এটি আরও কিছুটা সংশোধন করুন মানে replaceফাংশন রিজেপেক্স। আমি এটি পুরোপুরি পেলাম না। আপনি কি এটি আরও একটু ব্যাখ্যা করতে চান?
muneeb_ahmed

4

এখানে একটি খুব সহজ উপায়:

function removeSpaces(string){
return string.split(' ').join('');
}

1
আপনি বুঝতে পারেন যে এই প্রশ্নটি 2009 সালে জিজ্ঞাসা করা হয়েছিল, আপনি কি? : ডি
গ্রাফি কোড

5
হ্যাঁ আমি জানি। তবে
কারওর

3
তুমি বুঝতে পেরেছ! জিনিস শেখার এবং ভাগ করে নেওয়ার চেতনা সর্বদা একটি ভাল জিনিস!
হেনরিডিভ

3
"হ্যালো ওয়ার্ল্ড" -> "হেলিওরল্ড"
চার্লি বার্নস

2
এই উত্তরটি ভুল। trimকেবলমাত্র শীর্ষস্থানীয় এবং চলমান শ্বেতস্পেসকে সরানো উচিত (এতে ট্যাব এবং অন্যান্য অক্ষর রয়েছে)। এটি পরিবর্তে মধ্যবর্তী স্থানগুলি সহ সমস্ত স্থান সরিয়ে দেয়।
mbomb007


3

আপনি কেবল আপনার পরিবর্তনশীলটিকে স্ট্রিং হিসাবে ঘোষণা করতে এবং এর ট্রিম ফাংশনটি ব্যবহার করতে পারেন:

var str = new String('my string'); 
str= str.trim();

2

আজ, প্রতিটি ব্রাউজার সমর্থন করে String.prototype.trim()

আপনি এটি এর মতো ব্যবহার করুন:

var origStr = '   foo  ';
var newStr = origStr.trim(); // Value of newStr becomes 'foo'

আপনি যদি এখনও কোনও প্রাচীন ব্রাউজারকে সমর্থন করতে পারেন যা এই বৈশিষ্ট্যটি সমর্থন করে না, এটি এমডিএন দ্বারা প্রস্তাবিত একটি পলিফিল :

if (!String.prototype.trim) {
    String.prototype.trim = function () {
       return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
    };
}

1

আমার একটি লাইব রয়েছে যা ট্রিম ব্যবহার করে। সুতরাং নিম্নলিখিত কোড ব্যবহার করে এটি সমাধান করুন।

String.prototype.trim = String.prototype.trim || function(){ return jQuery.trim(this); };

1
এটি একটি ভাল সমাধান নয়। যে ক্ষেত্রে jQuery এর দুটি উদাহরণ লোড করা হয়েছে সেই ক্ষেত্রে বিবেচনা করুন (ট্যাগ সহ একটি সাধারণ দৃশ্য)। যখন জিকুয়ারি লোডের দ্বিতীয় তম উদাহরণটি এটি ইতিমধ্যে সেট করা হয়েছে এমন .trim()নেটিভের সমান এর পদ্ধতিটি String.prototype.trimসেট করবে return jQuery.trim(this), এইভাবে একটি স্ট্যাক ওভারফ্লো তৈরি করবে।
ব্র্যাড এম

1
if(!String.prototype.trim){  
  String.prototype.trim = function(){  
    return this.replace(/^\s+|\s+$/gm,'');  
  };  
}

পূর্ববর্তী উত্তরগুলি থেকে, এটি পতাকা যুক্ত করার চেয়ে পৃথক m

পতাকা mবেশ কয়েকটি রৈখিকের পাঠ্য অনুসন্ধান করবে। এই মোডে, প্যাটার্নের শুরু এবং শেষ চিহ্নটি ^ $নিউলাইন অক্ষর ( \n) এর আগে এবং পরে isোকানো হয় ।


1

আপনি এটি সরল জাভাস্ক্রিপ্ট ব্যবহার করে করতে পারেন:

function trimString(str, maxLen) {
if (str.length <= maxLen) {
return str;
}
var trimmed = str.substr(0, maxLen);
return trimmed.substr(0, trimmed.lastIndexOf(' ')) + '…';
}

// Let's test it

sentenceOne = "too short";
sentencetwo = "more than the max length";

console.log(trimString(sentenceOne, 15));
console.log(trimString(sentencetwo, 15));

1

এখন জাভাস্ক্রিপ্ট ট্রিম () বিল্ড।

let yourName = ' something   ';
let actualTrimmedName = yourName.trim();

কেবল কনসোল বা মুদ্রণ কোডের পরে আপনার নামটিও ছাঁটা হবে।


কোনও নতুন তথ্য যুক্ত না করে এমন কোনও উত্তর পোস্ট করার আগে প্রশ্নে মন্তব্যগুলি পড়ার বিষয়টি নিশ্চিত করুন। শীর্ষস্থানীয় বেশ কয়েকটি মন্তব্যগুলি এটিকে বর্ণনা / আলোচনা করছে এবং প্রচুর পরিমাণে ভোট গ্রহণ করেছে। এই মন্তব্যগুলি প্রায় 8 বছর আগের এবং প্রশ্নটি নিজেই প্রায় 11 বছর পুরানো।
রস গুরবাট

0

কী কী বাগগুলি এখানে লুকিয়ে রাখতে পারে তা জানেন না, তবে আমি এটি ব্যবহার করি:

var some_string_with_extra_spaces="   goes here    "
console.log(some_string_with_extra_spaces.match(/\S.*\S|\S/)[0])

বা এটি, যদি পাঠ্যটি প্রবেশ করে:

console.log(some_string_with_extra_spaces.match(/\S[\s\S]*\S|\S/)[0])

আরেকবার চেষ্টা করুন:

console.log(some_string_with_extra_spaces.match(/^\s*(.*?)\s*$/)[1])

0

এটি এটি টাইপস্ক্রিপ্টে রয়েছে:

var trim: (input: string) => string = String.prototype.trim
    ? ((input: string) : string => {
        return (input || "").trim();
    })
    : ((input: string) : string => {
        return (input || "").replace(/^\s+|\s+$/g,"");
    })

নেটিভ প্রোটোটাইপ উপলব্ধ না হলে এটি রেগেক্সে ফিরে যাবে।


0

আমি এই ফাংশনটি ট্রিমের জন্য লিখেছিলাম, যখন .trim () ফাংশনটি ২০০৮ সালে জেএস উপায়ে পাওয়া যায়নি the

ট্রিম ফাংশন

function trim(str)
{
    var startpatt = /^\s/;
    var endpatt = /\s$/;

    while(str.search(startpatt) == 0)
        str = str.substring(1, str.length);

    while(str.search(endpatt) == str.length-1)
        str = str.substring(0, str.length-1);   

    return str;
}

ব্যাখ্যা : ফাংশনটি ছাঁটাই () একটি স্ট্রিং অবজেক্ট গ্রহণ করে এবং কোনও শুরুর এবং অনুসরণযোগ্য শ্বেতস্পেস (স্পেস, ট্যাব এবং নিউলাইনস) সরিয়ে এবং ছাঁটা স্ট্রিংটি ফেরত দেয়। বৈধ ডেটা প্রেরণের জন্য তা নিশ্চিত করতে আপনি ফর্ম ইনপুটগুলি ছাঁটাতে এই ফাংশনটি ব্যবহার করতে পারেন।

ফাংশনটি উদাহরণ হিসাবে নিম্নলিখিত পদ্ধতিতে ডাকা যেতে পারে।

form.elements[i].value = trim(form.elements[i].value);

-4

ছাঁটাই করা প্রয়োজনীয় যেখানে সন্ধানের জন্য খনি একটি একক রেজেক্স ব্যবহার করে এবং কাঙ্ক্ষিত স্ট্রেরিংয়ের সীমা নির্ধারণ করতে সেই রেজেক্সের ফলাফলগুলি ব্যবহার করে:

var illmatch= /^(\s*)(?:.*?)(\s*)$/
function strip(me){
    var match= illmatch.exec(me)
    if(match && (match[1].length || match[2].length)){
        me= me.substring(match[1].length, p.length-match[2].length)
    }
    return me
}

এতে যে একটি ডিজাইনের সিদ্ধান্ত নিয়েছে তা হ'ল চূড়ান্ত ক্যাপচার সম্পাদন করতে একটি স্ট্রিং ব্যবহার করা। এস / \?: // (মধ্যমেয়াদী ক্যাপচারিং করুন) এবং প্রতিস্থাপন খণ্ডটি হয়ে যায়:

    if(match && (match[1].length || match[3].length)){
        me= match[2]
    }

এই ইমপ্লগুলিতে আমি তৈরি করেছি দুটি পারফরম্যান্স বেট:

  1. সাবস্ট্রিং বাস্তবায়ন কি মূল স্ট্রিংয়ের ডেটা অনুলিপি করে? যদি তাই হয়, প্রথমদিকে, যখন স্ট্রিংটি ছাঁটাই করা দরকার সেখানে একটি ডাবল ট্র্যাভারসাল হয়, প্রথমে রেজিজেসে (যা আশাবাদী আংশিক হতে পারে) এবং দ্বিতীয়টি স্ট্রিংয়ের নিষ্কাশনে থাকে। আশা করা যায় একটি স্ট্রিং বাস্তবায়ন কেবল মূল স্ট্রিংয়ের উল্লেখ করে, তাই সাবস্ট্রিংয়ের মতো ক্রিয়াকলাপগুলি প্রায় মুক্ত হতে পারে। আঙ্গুলের ক্রস

  2. রেগেক্স ইমপ্লায়েন্স ক্যাপচার কত ভাল? মধ্যমেয়াদী, আউটপুট মান, সম্ভবত খুব দীর্ঘ হতে পারে। আমি ব্যাঙ্ক করতে প্রস্তুত ছিলাম না যে সমস্ত রেইজেক্স প্ররোচিত করেছে 'ক্যাপচারিং কয়েক'শ কেবি ইনপুট ক্যাপচারে ব্যাক করবে না, তবে আমিও পরীক্ষা করিনি (অনেক রানটাইম, দুঃখিত!)! দ্বিতীয় সবসময় একটি ক্যাপচার চালায়; যদি আপনার ইঞ্জিন হিট না নিয়ে এটি করতে পারে, উপরের স্ট্রিং-রোপিং-কৌশলগুলি ব্যবহার করে, সম্ভবত এটি ব্যবহার করুন!


-7

আই 9 9 এবং অন্যান্য ব্রাউজারগুলির জন্য

function trim(text) {
    return (text == null) ? '' : ''.trim.call(text);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.