我正在尝试从每个数组中删除特定数字,但没有成功。我用谷歌搜索了它,但我没有发现类似的东西。首先我用逗号创建了一个数组,然后我想删除021
并从array[i]
(每个值)中删除,只删除前三个字符。
$('.numbers').each(function() {
if ($(this).text().indexOf(',') != -1) {
var seprate = $(this).text();
var array = seprate.split(',');
$.each(array, function(i, el) {
if (array[i].indexOf("021") != -1) {
array[i].substr(0,2).replace("021", "")
}
$('.phonearray').append(array[i]);
});
}
});
.phonearray {
background: lightgreen;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="numbers">
02188776021 , 09123074859 , 021-45676543 , 021 -55446021
</div>
<div class="phonearray">
</div>
我使用substr
删除前三个字符,但它不起作用。
答案 0 :(得分:2)
replace()
不会修改原始字符串(JavaScript字符串是不可变的)。您需要将结果分配回数组。
您可以使用正则表达式替换来执行您想要的操作。正则表达式^021\s*-?
在开头匹配021
,可能后跟空格和-
字符。
我还使用.trim()
删除了逗号周围的空格。
$('.numbers').each(function() {
if ($(this).text().indexOf(',') != -1) {
var seprate = $(this).text();
var array = seprate.split(',');
$.each(array, function(i, el) {
var val = el.trim().replace(/^021\s*-?/, '');
$('.phonearray').append(val);
});
}
});
&#13;
.phonearray {
background: lightgreen;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="numbers">
02188776021 , 09123074859 , 021-45676543 , 021 -55446021
</div>
<div class="phonearray">
</div>
&#13;
答案 1 :(得分:1)
让我们先定义问题: 您有一个字符串,其中包含以逗号分隔的电话号码,如果在每个号码中找到,则必须删除前缀
首先想到:
function removePrefixes(input /* string */) {
return input.split(',')
.map(x => x.trim())
.map(x => x.replace(/\b021\s*/, ''))
.join(', ')
}
替换原始文字:
$('.numbers').text((i, text) => removePrefixes(text));
示例:
removePrefixes("02188776021 , 09123074859 , 021-45676543 , 021 -55446021")
// returns "88776021, 09123074859, -45676543, -55446021"
说明:
\b
表示字边界,\s*
后面的任何空格从这里做任何你想做的事。