JavaScriptで文字列をトリミングする方法
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,' ');};
jQuery からの切り取りは、すでにそのフレームワークを使用している場合に便利です。
$.trim(' your string ');
私はjQueryをよく使う傾向があるので、それを使って文字列をトリミングするのは自然なことです。しかし、jQueryに対する反発がある可能性はありますか? :)
上記にはたくさんの正しい答えがありますが、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/ /
たくさんの実装があります それが使用できます最も明白なものはこのようなもののようです:
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, "");
};
" foo bar ".trim(); // "foo bar"
シンプル版はこちら JavaScriptトリムの一般的な機能は何ですか?
function trim(str) {
return str.replace(/^\s+|\s+$/g,"");
}
この質問は3年前に尋ねられたことを私は知っています。String.trim()
はJavaScriptでネイティブに追加されました。
document.getElementById("id").value.trim();
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);
}
JQueryを使用している場合は、jQuery.trim()
関数を使用してください。例えば:
if( jQuery.trim(StringVariable) == '')
ネイティブ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, '');
};
}
}
今日では string.trim() を使用できます。これはネイティブのJavaScript実装です。
var orig = " foo ";
console.log(orig.trim());//foo
また見なさい
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 から盗まれた。
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 ")
と呼びます。
これはとても簡単な方法です:
function removeSpaces(string){
return string.split(' ').join('');
}
単にコードを使う
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, '');
};
}
変数を文字列として宣言してそのトリム関数を使用するだけです。
var str = new String('my string');
str= str.trim();
今日では、ほとんどすべてのブラウザが 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, '');
};
}
if(!String.prototype.trim){
String.prototype.trim = function(){
return this.replace(/^\s+|\s+$/gm,'');
};
}
前の答えとは異なり、フラグm
を追加するのが異なります。
フラグm
はいくつかの線形のテキストを検索します。このモードでは、パターンの始めと終わりのマーク(^
$
)が改行文字(\n
)の前後に挿入されます。
私はトリムを使用するライブラリを持っています。そのため、次のコードを使用して解決しました。
String.prototype.trim = String.prototype.trim || function(){ return jQuery.trim(this); };
ネイティブである String でtrim()
を使用するのが最も簡単な方法です:
const fullName = " Alireza Dezfoolian ";
const trimmedFullName = fullName.trim();
console.log(trimmedFullName);
これはTypeScriptです。
var trim: (input: string) => string = String.prototype.trim
? ((input: string) : string => {
return (input || "").trim();
})
: ((input: string) : string => {
return (input || "").replace(/^\s+|\s+$/g,"");
})
ネイティブプロトタイプが利用できない場合は正規表現にフォールバックします。
.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);
どんなバグがここで隠れることができるかわかりません、しかし私はこれを使います:
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])
あなたは普通の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 を使用して文字列をトリミングする、その他の例をいくつか示します。