我在javascript中几乎不需要帮助。我正在用屈臣氏演讲来发短信。用户有时在输入电话号码时使用两倍或三倍。如何用文本中的下一个数字替换双字或三字。请咨询
let text = "my phone number is double 8 double 0 476 double 5";
问候 信条
答案 0 :(得分:0)
您可以为此使用正则表达式,并使用String.replace()
方法,如下所示:
text = text.replace(/double (\d)/g, '$1$1').replace(/triple (\d)/g, '$1$1$1');
之后,您的示例文本值将为:
"my phone number is 88 00 476 55"
.replace
将第一个参数作为regex
,将第二个参数作为要在字符串中替换的参数(如果在第一个参数中找到)。
所以
正则表达式中的/double (\d)/g
表示字母double
,后跟digits (\d)
,然后将其替换为第一个匹配组$1
,在我们的情况下是括号中的模式,即。 (\d)
表示数字。因此,将其替换为$1$1
意味着将double followed by Thedigit
替换为两次TheDigit
答案 1 :(得分:0)
JavaScript内置了正则表达式。 您可以使用这些模式找到“双0-9”字词并将其替换。 f.e .:
let text = "my phone number is double 8 double 0 476 double 5";
text = text.replace(/double (\d)/g, '$1$1').replace(/triple (\d)/g, '$1$1$1');
$('#result').html(text);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="result"></div>
(仅插入jQuery来显示结果)
中找到有关RegExp的更多更多信息。答案 2 :(得分:0)
也许您期望这样:
text.replace(/double (\d)/g, '$1$1')
.replace(/triple (\d)/g, '$1$1$1')
.replace(/(\d+)( +)/g, '$1');
此代码段输出“我的电话号码是880047655”。有关$1
的更多信息,请参见string replace。
答案 3 :(得分:0)
这里是无正则表达式版本,只是为了让您了解。我正在用下一个值替换双/三词。
let text = "my phone number is triple 8 double 0 476 double 5";
copy = text = text.split(" ");
$.each(text, function(index, value) {
if(value == 'double')
copy[index] = parseInt(text[index+1]);
if(value == 'triple')
copy[index] = parseInt(text[index+1])+''+parseInt(text[index+1]);
});
console.log(copy);