キーワード文字列を分割して、コンマ区切りの文字列に変換する必要があります。ただし、ユーザーが既に入力した余分なスペースやコンマを取り除く必要があります。
var keywordString = "ford tempo, with,,, sunroof";
この文字列への出力:
ford,tempo,with,sunroof,
最終出力に末尾のコンマが必要で、スペースは不要です。
Regexと文字列分割関数のどちらを使用すればよいかわからない。
誰かがすでにこのようなことをしていますか?
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);
Felix Kling に加えて answer
前後に空白がある場合は、最初にそれらを削除する必要があります。
プロトタイプにフックすることにより、「拡張メソッド」をJavaScript String
に追加することが可能です。以下を使用して前後の空白を削除してきましたが、これまでのところうまくいきました:
// trims the leading and proceeding white-space
String.prototype.trim = function()
{
return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
};
ES6の場合:
var temp = str.split(",").map((item)=>item.trim());
私はそれを単純に保ち、代わりに参加することを許可されているすべてのに一致しない:
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);