JavaScript中的字符串转换

时间:2018-09-19 10:22:08

标签: javascript

我在javascript中几乎不需要帮助。我正在用屈臣氏演讲来发短信。用户有时在输入电话号码时使用两倍或三倍。如何用文本中的下一个数字替换双字或三字。请咨询

let text = "my phone number is double 8 double 0 476 double 5";

问候 信条

4 个答案:

答案 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来显示结果)

您可以在Mozillas Documentation: RegExp

中找到有关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);