14

キーワード文字列を分割して、カンマ区切りの文字列に変換する必要があります。ただし、ユーザーがすでに入力している余分なスペースやコンマを削除する必要があります。

var keywordString = "ford    tempo, with,,, sunroof";

この文字列への出力:

ford,tempo,with,sunroof,

最終出力には末尾のコンマが必要で、スペースは必要ありません。

正規表現と文字列分割関数のどちらを使用すべきかわからない。

誰かがすでにこのようなことをしていますか?

javascript(またはJQ)を使用する必要があります。

編集(実用的なソリューション):

var keywordString = ", ,, ford,    tempo, with,,, sunroof,, ,";

//remove all commas; remove preceeding and trailing spaces; replace spaces with comma

str1 = keywordString.replace(/,/g , '').replace(/^\s\s*/, '').replace(/\s\s*$/, '').replace(/[\s,]+/g, ',');


//add a comma at the end
str1 = str1 + ',';

console.log(str1);
4

6 に答える 6

34

どちらの場合も正規表現が必要になります。文字列を分割して結合できます。

str = str.split(/[\s,]+/).join();

これは分割され、連続する空白とコンマを消費します。同様に、これらの文字を一致させて置き換えることができます。

str = str.replace(/[\s,]+/g, ',');

末尾のコンマの場合は、1つ追加するだけです

str = .... + ',';

前後に空白がある場合は、最初にそれらを削除する必要があります。

参照: 、、.split正規表現.replace

于 2012-06-26T15:53:05.160 に答える
9

ES6の場合

var temp = str.split(",").map((item)=>item.trim());
于 2017-03-29T02:03:46.477 に答える
6

フェリックス・クリング答えに加えて

前後に空白がある場合は、最初にそれらを削除する必要があります。

StringJavaScriptのプロトタイプにフックすることで、JavaScriptに「拡張メソッド」を追加することができます。私は前後の空白をトリミングするために以下を使用してきましたが、これまでのところ、それは扱いました:

// trims the leading and proceeding white-space
String.prototype.trim = function()
{
    return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
};
于 2012-06-26T16:06:24.017 に答える
1

私はそれをシンプルに保ち、代わりに参加することを許可されていないものと一致させます:

str.split(/[^a-zA-Z-]+/g).filter(v=>v);

これは、許可されていない文字が間にあるかどうかに関係なく、すべてのギャップに一致します。最初と最後の空のエントリを取り除くために、null以外の値の単純なフィルタが実行されます。regex101の詳細な説明を参照してください。

var str = ", ,, ford,    tempo, with,,, sunroof,, ,";

var result = str.split(/[^a-zA-Z-]+/g).filter(v=>v).join(',');

console.info(result);

于 2017-05-27T05:47:35.280 に答える
0
let query = "split me by space and remove trailing spaces and store in an array  ";
let words = query.trim().split(" ");
console.log(words)

出力:['split'、'me'、'by'、'space'、'and'、'remove'、'trailing'、'spaces'、'and'、'store'、'in'、'an' 、 '配列' ]

于 2020-07-23T11:09:06.630 に答える
-1

空白を残して分割、トリミング結合したいだけの場合は、 lodashでこれを行うことができます:

// The string to fix
var stringToFix = "The Wizard of Oz,Casablanca,The Green Mile";

// split, trim and join back without removing all the whitespaces between
var fixedString = _.map(stringToFix.split(','), _.trim).join(' == ');

// output: "The Wizard of Oz == Casablanca == The Green Mile"
console.log(fixedString);
<script src="https://cdn.jsdelivr.net/lodash/4.16.3/lodash.min.js"></script>

于 2016-10-05T08:53:36.890 に答える