web-dev-qa-db-ja.com

JavaScriptで文字列をトリムしますか?

JavaScriptで文字列をトリミングする方法

1268
Vinod

IE 9以降のすべてのブラウザに trim() があります。

trim()をサポートしていないブラウザでは、 _ mdn _ からこのpolyfillを使用できます。

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

jQuery からの切り取りは、すでにそのフレームワークを使用している場合に便利です。 

$.trim('  your string   ');

私はjQueryをよく使う傾向があるので、それを使って文字列をトリミングするのは自然なことです。しかし、jQueryに対する反発がある可能性はありますか? :) 

477
barneytron

上記にはたくさんの正しい答えがありますが、JavaScriptのStringオブジェクトはECMAScript 5の時点でネイティブの.trim()メソッドを持っていることに注意してください。したがって理想的には、trimメソッドをプロトタイプ化しようとする試みは、実際にそれがすでに存在するかどうかを実際に確認する必要があります。

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

ネイティブに追加された場所: JavaScript 1.8.1/ECMAScript 5

このようにサポートされています:

Firefox: 3.5+

Safari: 5+

Internet Explorer: IE9 + (標準モードのみ) http://blogs.msdn.com/b/ie/archive/2010/06/25/enhanced-scripting-in-ie9-ecmascript -5-support-and-more.aspx

Chrome: 5+

オペラ: 10.5+

ECMAScript 5サポート表: http://kangax.github.com/es5-compat-table/ /

162
scunliffe

たくさんの実装があります それが使用できます最も明白なものはこのようなもののようです:

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

" foo bar ".trim();  // "foo bar"
126
Gumbo

シンプル版はこちら JavaScriptトリムの一般的な機能は何ですか?

function trim(str) {
        return str.replace(/^\s+|\s+$/g,"");
}
46
Mark Davidson

この質問は3年前に尋ねられたことを私は知っています。String.trim()はJavaScriptでネイティブに追加されました。 

document.getElementById("id").value.trim();
28
Vijin Paulraj

Flagrant Badassery ベンチマーク情報付きの11の異なるトリムがあります。

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

驚くことではないが正規表現ベースは伝統的なループより遅いです。


これが私の個人的なものです。このコードは古いです!私はそれをJavaScript 1.1とNetscape 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);
}
20
Tero

JQueryを使用している場合は、jQuery.trim()関数を使用してください。例えば:

if( jQuery.trim(StringVariable) == '')
20
Able Alias

ネイティブJavaScriptメソッドを使用します。 String.trimLeft()String.trimRight() 、および String.trim()


String.trim()IE9 +および他のすべての主要なブラウザでサポートされています

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


String.trimLeft()およびString.trimRight()は非標準ですが、 でサポートされています IE を除くすべての主要なブラウザー

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


ただし、polyfillを使うと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, '');
        };
    }
}
13
Web_Designer

今日では string.trim() を使用できます。これはネイティブのJavaScript実装です。

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

また見なさい 

11
Emilio Gort
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, " ");
};

恥知らずに Matt duereg から盗まれた。

10
yckart

Angular js projectからコードをトリム

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 ")と呼びます。

7
rab

これはとても簡単な方法です:

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

単にコードを使う

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

変数を文字列として宣言してそのトリム関数を使用するだけです。 

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

今日では、ほとんどすべてのブラウザが String.prototype.trim() をサポートしています。

あなたはこのようにそれを使います:

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

それでもこの機能をサポートしていない古いブラウザをサポートする必要があるかもしれない場合、これは MDFによって提案されたpolyfill です。

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

前の答えとは異なり、フラグmを追加するのが異なります。 

フラグmはいくつかの線形のテキストを検索します。このモードでは、パターンの始めと終わりのマーク(^$)が改行文字(\n)の前後に挿入されます。

1
simhumileco

私はトリムを使用するライブラリを持っています。そのため、次のコードを使用して解決しました。

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

ネイティブである String trim()を使用するのが最も簡単な方法です:

const fullName = "       Alireza Dezfoolian     ";
const trimmedFullName = fullName.trim();

console.log(trimmedFullName);

0
Alireza

これはTypeScriptです。

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

ネイティブプロトタイプが利用できない場合は正規表現にフォールバックします。

0
Joseph Lennox

.trim()関数が2008年にJSで使用できなくなったとき、私は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);
0
AnaMaria

どんなバグがここで隠れることができるかわかりません、しかし私はこれを使います:

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

あるいは、text containsが入っていれば、

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
plavozont

あなたは普通のJavaScriptを使ってそれをすることができます:

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

JavaScript を使用して文字列をトリミングする、その他の例をいくつか示します。

0
user5846985