我有一个像这样的字符串:
const value = "12345XXXX98765XXXX"
我要删除“ XXXX”并添加“,”而不是“ XXXX”。 我该怎么办?
我的期望值为:"12345,98765"
。
然后我想要一个带有值元素的数组。我的数组应该是这样的:
var array = [];
array[0] = "12345",
array[1] = "98765"
我该怎么做?
我尝试使用以下代码:value.replace("XXXX", ",")
,但它再次显示XXXX。
答案 0 :(得分:1)
尝试一下:
const value = "12345XXXX98765XXXX"
const result = value
.replace(/[^\d]+/g, ',') // replace any consequent non-digit symbols with single comma
.replace(/,$/, '') // trim off the last comma if any
console.info("String: " + result)
// or if you are looking to obtain the array directly, you can do:
const arr = value
.split(/[^\d]+/) // split on consequent non-digit symbols
.filter(Boolean) // filter out empty items
console.info("Array: ", arr)
请注意,无论您使用X
作为占位符还是任何其他字母,并且它们的数量(4个或更多或更少)都无关紧要,以上代码片段都可以使用。
答案 1 :(得分:1)
有关偷偷看的建议,完整的代码在这里:
var value = "12345XXXX98765XXXX"
for(var i = 0; i < value.length; i++) {
if(value[i] === 'X') {
value = value.replace('XXXX', ',')
}
}
value = value.substring(0, value.length - 1)
var parts = value.split(',')
console.info(parts)
如果您想进一步了解每个部分,请阅读以下内容:
我要删除“ XXXX”并添加“,”而不是“ XXXX”。我该怎么办?
首先,您需要使用称为 replace()的方法,但是要删除所有出现的'XXXX'的方法,您可以使用循环搜索您可以找到的任何“ X”。
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
var value = "12345XXXX98765XXXX"
for(var i = 0; i < value.length; i++) { //looking through the whole string
if(value[i] === 'X') { //For any X found
value = value.replace('XXXX', ',') //you should replace them for a comma
}
}
您可能已经注意到,最后一个'XXXX'也变成了逗号,因此只需使用 substring()即可将其删除。
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring
value = value.substring(0, value.length - 1)
所以,现在您有了一个想要的字符串。 “ 12345,98765”
要拆分和获取逗号前后的值,可以使用 split()并将结果保存在新变量(即数组)中。
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split
var parts = value.split(',')
答案 2 :(得分:0)
如果您使用replace
,则只会更改一次
您必须使用正则表达式
value.replace(/XXX/g, ",")
稍后,您可以使用split
将该字符串转换为数组
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split
答案 3 :(得分:0)
您是否尝试保存replace()
的返回?
array = value.replace("XXXX",",");
答案 4 :(得分:0)
我们可以尝试用正则表达式替换,然后进行字符串拆分:
var value = "12345XXXX98765XXXX"
value = value.replace(/XXXX/mg, ",").replace(/,$/, "");
parts = value.split(",");
console.log(parts);
请注意,如果字符串碰巧以XXXX
结尾(在您的示例中,则是这样),第二个正则表达式替换将有条件地删除最后的逗号。如果没有尾随逗号,第二个替换将是无操作。
答案 5 :(得分:0)
您需要重新分配replace的返回值
value = value.replace("XXXX",",");
此外,由于您将其声明为const
,因此您将无法重新分配,因此请使用let
答案 6 :(得分:0)
您可以将replace()
与正则表达式一起用于匹配的令牌(XXXX):
const value = "12345XXXX98765XXX";
var res = value.replace(/[X]+/g, ',').replace(/,$/, '').split(',');
console.log(res);
答案 7 :(得分:0)
.replace()返回一个新字符串(它不会修改现有字符串)。您需要执行以下操作:
value = value.replace(“ XXXX”,“,”)
答案 8 :(得分:0)
var value = "12345XXXX98765XXXX";
value = value.split("XXXX");
console.log(value);
答案 9 :(得分:0)
由于需要数组,因此显而易见的方法是使用split而不是replace
StackLayout