如何替换数字之间的字符串?

时间:2019-04-03 12:48:25

标签: javascript regex

我有一个像这样的字符串:

const value = "12345XXXX98765XXXX"

我要删除“ XXXX”并添加“,”而不是“ XXXX”。 我该怎么办?

我的期望值为:"12345,98765"。 然后我想要一个带有值元素的数组。我的数组应该是这样的:

var array = []; array[0] = "12345", array[1] = "98765"

我该怎么做?

我尝试使用以下代码:value.replace("XXXX", ","),但它再次显示XXXX。

10 个答案:

答案 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