javascript - tutorial - জাভাস্ক্রিপ্ট বই pdf




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

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


IE9 + এবং অন্যান্য ব্রাউজারের জন্য

function trim(text) {
    return (text == null) ? '' : ''.trim.call(text);
}

IE9 + থেকে সব ব্রাউজার trim()

যারা ব্রাউজারগুলি trim() সমর্থন করে না, তাদের জন্য আপনি এই পলিফিলটি 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, '');
        };
    })();
}

এটা দেখ:

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,' ');};

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

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

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

$.trim('  your string   ');

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


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

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));

জাভাস্ক্রিপ্ট ব্যবহার করে একটি স্ট্রিং ছাঁটা আরো উদাহরণ এখানে।


আমি একটি lib যে trim ব্যবহার করে। তাই নিম্নলিখিত কোড ব্যবহার করে এটি সমাধান।

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

আমি ট্রামের জন্য এই ফাংশনটি লিখেছিলাম, যখন .trim () ফাংশনটি ২008 সালে জে। এস। ফাংশনে ফিরে আসেনি। পুরোনো ব্রাউজারগুলির কিছু এখনও .trim () ফাংশন সমর্থন করে না এবং আমি আশা করি এই ফাংশনটি কাউকে সাহায্য করবে।

ট্রাইম ফাংশন

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;
}

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

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

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

এখন আপনি MDN ব্যবহার করতে পারেন যা জাভাস্ক্রিপ্ট বাস্তবায়ন

var orig = "   foo  ";
console.log(orig.trim());//foo

আরো দেখুন


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

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])

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

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

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


খনি প্রয়োজনীয় যেখানে ট্রামিং প্রয়োজন জন্য একটি একক regex ব্যবহার করে, এবং পছন্দসই সাবস্ট্রিং সীমানার নির্ধারণ করতে regex এর ফলাফল ব্যবহার করে:

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
}

এই মধ্যে গিয়েছিলাম যে একটি নকশা সিদ্ধান্ত চূড়ান্ত ক্যাপচার সঞ্চালন একটি substring ব্যবহার করা হয়। গুলি / \?: // (মাঝারি শব্দ ক্যাপচার করা) এবং প্রতিস্থাপন ফাটল হয়ে যায়:

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

আমি এই impls মধ্যে তৈরি দুটি কর্মক্ষমতা bets আছে:

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

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


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


String.trim() http://kangax.github.com/es5-compat-table/ সমর্থিত:

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


String.trimLeft() এবং String.trimRight() অ-মানক, তবে IE ব্যতীত সমস্ত প্রধান ব্রাউজারগুলিতে সমর্থিত

'  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, '');
        };
    }
}

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

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

নেটিভ যোগ করা হয়েছে: জাভাস্ক্রিপ্ট 1.8.1 / ECMAScript 5

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

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

সাফারি: 5+

ইন্টারনেট এক্সপ্লোরার: IE9 + (স্ট্যান্ডার্ড মোডে শুধুমাত্র!) http://blogs.msdn.com/b/ie/archive/2010/06/25/enhanced-scripting-in-ie9-ecmascript-5-support-and-more.aspx

ক্রোম: 5+

অপেরা: 10.5+

ECMAScript 5 সাপোর্ট টেবিল: http://kangax.github.com/es5-compat-table/


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

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, '');
  };
}

পতাকাঙ্কিত Badassery বেঞ্চমার্ক তথ্য সঙ্গে 11 বিভিন্ন trims আছে:

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

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

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

/**
 *  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);
}

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

পূর্ববর্তী উত্তর থেকে, এটি ফ্ল্যাগ m যোগ পৃথক।

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








trim