文字列から数字を削除したい:
questionText = "1 ding ?"
1
番号と疑問符を置き換えたいのですが?
。任意の数にすることができます。次の機能しないコードを試しました。
questionText.replace(/[0-9]/g, '');
文字列から数字を削除したい:
questionText = "1 ding ?"
1
番号と疑問符を置き換えたいのですが?
。任意の数にすることができます。次の機能しないコードを試しました。
questionText.replace(/[0-9]/g, '');
回答:
非常に近い、試してみてください:
questionText = questionText.replace(/[0-9]/g, '');
replace
既存の文字列では機能せず、新しい文字列を返します。あなたがそれを使いたいならば、あなたはそれを保つ必要があります!
同様に、新しい変数を使用できます。
var withNoDigits = questionText.replace(/[0-9]/g, '');
数字のブロック全体を一度に削除する最後のトリックですが、それは行き過ぎかもしれません:
questionText = questionText.replace(/\d+/g, '');
文字列は不変であるためquestionText.replace(/[0-9]/g, '');
、それ自体で機能しますが、questionText-stringは変更されません。置換の結果を別の文字列変数に割り当てるか、questionText自体に再度割り当てる必要があります。
var cleanedQuestionText = questionText.replace(/[0-9]/g, '');
または1回で(を使用して\d+
、Kobiの回答を参照):
questionText = ("1 ding ?").replace(/\d+/g,'');
そして、あなたがそれにいる間に先頭(および末尾)のスペースをトリミングしたい場合:
questionText = ("1 ding ?").replace(/\d+|^\s+|\s+$/g,'');
/g
すべての正規表現に- JavaScriptは迷惑なことな方法です:)
2番目のオプションは、次のような式で数字以外を照合して返すことです。
/\D+/g
これは、質問(1 ding ?
)の特定の文字列で機能する可能性があります。
function non_digit_string(str) {
const regex = /\D+/g;
let m;
non_digit_arr = [];
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
m.forEach((match, groupIndex) => {
if (match.trim() != '') {
non_digit_arr.push(match.trim());
}
});
}
return non_digit_arr;
}
const str = `1 ding ? 124
12 ding ?
123 ding ? 123`;
console.log(non_digit_string(str));
式を単純化/変更/探索したい場合は、regex101.comの右上のパネルで説明されています。必要に応じて、このリンクで、いくつかのサンプル入力とどのように一致するかを確認することもできます。
jex.imは正規表現を視覚化します。
これは、regex
どちらがなくてもより効率的に実行できます。
var questionText = "1 ding ?"
var index = 0;
var num = "";
do
{
num += questionText[index];
} while (questionText[++index] >= "0" && questionText[index] <= "9");
questionText = questionText.substring(num.length);
また、ボーナスとして、番号も保存されます。これは、一部の人にとって役立つ場合があります。