6

重複の可能性:
javascript で文字列をトリミングするにはどうすればよいですか?

javascript で replace メソッドを使用して、文字列の先頭と末尾の間の空白を削除しようとしています。

ここに私のコード:

どのように結果を達成する必要がありますか?

input  -> "   first second     ".replace(/[^\s|\s$]/g, ''); // " "
output -> "first second"
4

6 に答える 6

4

これをトリミングといいます。

正規表現では角かっこの代わりにかっこが必要であり、複数のスペースに一致させるには、空白指定子の乗数も必要です。

var s = "   first second     ".replace(/(^\s+|\s+$)/g, '');

デモ: http://jsfiddle.net/Guffa/N7xxt/

于 2012-08-22T12:29:26.497 に答える
3

これをスクリプトの先頭に追加します。

// Add ECMA262-5 string trim if not supported natively
//
if (!('trim' in String.prototype)) {
    String.prototype.trim= function() {
        return this.replace(/^\s+/, '').replace(/\s+$/, '');
    };
}

次にyourString.trim()、文字列の先頭と末尾にあるスペースを削除するために使用します。

于 2012-08-22T12:27:47.823 に答える
1

括弧 () を使用して、パイプ "|" の左側または右側に一致させることを指定する必要があります。角括弧ではなく記号。角括弧は実際には文字セットと一致します (つまり、[grapes] は "g"、"r"、"a"、"p"、"e"、または "s" のいずれかの単一のインスタンスに一致しますが、(grapes|apples) "grapes" または "apples" のいずれかに一致します)。

また、もう 1 つ欠けているのは、「数量」の表示です。言い換えれば、スペース (\s) に一致すると、何個のスペースを探す必要があるでしょうか? あなたの例では、単一のスペース文字のみに一致しています。おそらく、文字列の左右に存在する連続するスペースと同じ数だけ一致させたいでしょう。そのためには、文字 \s の直後に * (ゼロ以上に一致) または + (1 つ以上に一致) を追加する必要があります。

したがって、正規表現を書き直すには:

var input = "      first second      ";
var trimmed = input.replace(/(^\s+|\s+$)/g, '');
console.log(trimmed);

これらの行をコピーして JavaScript コンソールに貼り付け、目的の出力が得られることを確認できます。ここでの正規表現は文字通り、「文字列の先頭にある 1 つ以上の空白文字、または文字列の末尾に続く 1 つ以上の空白文字に一致する」ことを意味します。次に、replace 関数がその一致を取得し、それを '' に置き換えます。

于 2012-08-22T12:42:46.367 に答える
0

メソッドを置き換える理由 トリムを使用するだけです。すなわち。jQueryライブラリから

http://api.jquery.com/jQuery.trim/

于 2012-08-22T12:25:59.787 に答える
0

jQueryトリムを使用できます。

<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
        <pre id="original"></pre>
        <pre id="trimmed"></pre>
<script>
  var str = "         first second         ";
  $("#original").html("Original String: '" + str + "'");
  $("#trimmed").html("After trimed: '" + $.trim(str) + "'");
</script>

</body>
</html>
于 2012-08-22T12:29:43.887 に答える
0

パターンを少し変更します。

(^\s+|\s+$)

その後

var string = "     test     ";
string.replace(/(^\s+|\s+$)/gm, '');

動作するはずです;-)

于 2012-08-22T12:30:16.397 に答える