如何替换字符串中字母字符所包含的数字字符

时间:2017-07-02 09:46:29

标签: javascript regex string replace

我有一个非常非常长的字符串,其中包含mushr0ommong0lianc0rn等字词。我想将0替换为{{1} }}的。我知道o可能会有效,但在同一个字符串中,它还包含input.replace('0', 'o')70100等数字,我不希望{{1}影响它们的方法。我可以使用正则表达式来执行此操作吗?

4 个答案:

答案 0 :(得分:2)

var string = "mushr0om 70 bl00m 102"

var cleanString = string.split(' ').map((word)=>{

  if(! /^\d+$/.test(word) ){ return word.replace(/0/g,'o')}
  
  return word

}).join(' ')

console.log(cleanString);

答案 1 :(得分:1)

您可以为每个角色检查(上一个和下一个角色)。如果一个字符是一个数字,那么检查它是否是上一个。或下一个字符是非数字。如果有任何上一个。或者下一个字符是非数字然后替换。

  • 但是如果您在所需的字符串集中有任何子字符串,例如'mongolia007',那么解决方案就变得棘手了。但对于简单的情况,上面的解决方

答案 2 :(得分:1)

我认为您要替换前一个字母不是数字的所有“0”以及下一个字母而不是数字。

将字符串拆分为char数组,然后替换所需的字符。

et.setText(new StringBuilder(et.getText().trim()).append("1"));

答案 3 :(得分:1)

如果我理解,您只需要替换字符之间发生的0而不是实际数字中的0,例如900。正则表达式下面创建三个组,两个用于字符,零夹在它们之间。然后我们使用$1选择第一组(0之前的字符),使用$3选择第二组(0之后)。 0替换为o

var str = "mushr0om, mong0lian, c0rn - 700 hello909";
var str1 = str.replace(/([a-zA-Z])(0)([a-zA-Z])/ig, "$1o$3");
document.getElementById("dvOne").innerText = str1;
div {
  padding: 25px;
  color: red;
  font-size: 16px;
}
<div id="dvOne">
</div>