我对Javascript还是一个新手。寻找了一段时间之后,我一直无法找到问题的答案,或者也许我只是在搜索错误的内容。
在一堂课中,我们被要求写一些东西,使用户可以输入数字并收到数字的显示以及所有指向该数字的数字。另一部分是用单词替换所有包含数字(例如5或8)的数字实例。
但是 我的问题是,是否可以使用替换功能实现相同的功能。
类似下面的内容,但是如果用户显示50,51,52,则会显示Hello,Hello,Hello,而不是Hello0,Hello1,Hello2。
$(this).html($(this).html()。replace(/ 5 / g,“ Hello”));
使用其他一些if语句实现了原始分配。我还可以通过写出上述内容的大量变体来模仿上面的预期目标,但这几乎不可行。
$(this).html($(this).html()。replace(/ 5 / g,“ Hello”));
答案 0 :(得分:0)
我相信您所追求的是一个简单的涉及数字的正则表达式:
$("#numbers").on("click", function() {
$(this).html($(this).html().replace(/\d{2}/g, "Hello"));
});
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<p id="numbers">51, 52, 53</p>
<p>Click the above paragraph to see magic!</p>
<sub>One-time magic only</sub>
答案 1 :(得分:0)
如果您想用一件东西替换任何长度的数字,则可以使用/\d+/
之类的regular expression,意思是任意数量的数字:
let s = "50,51,52"
console.log(s.replace(/\d+/g, "hello"))
// only replace digits -- leaves everything else
let s2 = "500 some txt, 1 other,52 more"
console.log(s2.replace(/\d+/g, "hello"))
答案 2 :(得分:0)
jQuery具有一种替换元素的textContent的简便方法,即by using a function。也许您可以改用它。然后,只需将正则表达式调整为在字符串(the g
flag)中多次包含多个数字(\d+
)。我使用text()
代替了html()
,因为它们有不同的用途,前者更适合您的用例。
$('div').text(function (i, e) {
return e.replace(/\d+/g, 'Hello');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div>50,51,52</div>
如果您想在示例中的逗号后添加空格,则可以采用不同的方法。在这里,我使用类似的正则表达式将字符串拆分为数组,map
将所有匹配的模式与单词“ Hello”匹配,然后再次将数组连接成字符串。
$('div').text(function (i, e) {
return e.split(/\d+,/g).map(s => 'Hello').join(', ');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div>50,51,52</div>