如何替换字符串中的单个数字而不影响该字符串中的2位数字

时间:2016-07-25 12:16:02

标签: javascript

我正在努力更新此功能,该功能目前接收内容并用替代品替换目标的任何实例。

var content = textArea.value; //should be in string form
var target = targetTextArea.value;
var substitute = substituteTextArea.value;

var expression = new RegExp(target, "g"); //In order to do a global replace(replace more than once) we have to use a regex

content = content.replace(expression, substitute);

textArea.value = content.split(",");

这段代码在某种程度上有用...给出输入" 12,34,23,13,22,1,17"并被告知要更换" 1"用" 99"输出将是" 992,34,23,993,22,99,997"什么时候应该是" 12,34,23,13,22,99,17"。只有在替换数等于数字时才能执行替换,而不是数字的子字符串。

我不明白有关正则表达式需要进行全局替换的评论,我不确定这是否是一个线索?

还值得一提的是,我处理的是以逗号或空格分隔的字符串。

谢谢!

4 个答案:

答案 0 :(得分:0)

试试这个

    var string1 = "12,34,23,13,22,1,17";
    var pattern = /1[^\d]/g;
    // or pattern = new RegExp(target+'[^\\d]', 'g');
    var value = substitute+",";//Replace comma with space if u uses space in between
    string1 = string1.replace(pattern, value);
    console.log(string1);

答案 1 :(得分:0)

试试这个

target = target.replace(/,1,/g, ',99,');

答案 2 :(得分:0)

如果正则表达式不是必需的,那么你可以这样做

var str = "12,34,23,13,22,1,17";
var strArray = str.split(",");

for(var item in strArray)
{
    if(strArray[item] === "1")
    {
        strArray[item] = "99"
    }
}
var finalStr = strArray.join()

finalStr将为"12,34,23,13,22,99,17"

答案 3 :(得分:0)

编辑:当你说:"用逗号或空格分隔的字符串" 你的意思是带有所有逗号的字符串,还是带有所有空格的字符串? 或者你有一个带逗号和空格的字符串吗?

我的回答没有正则表达式,没有什么花哨的...... 但看起来你还没有得到一个有效的答案

<div id="log"></div>
<script>
var myString =  "12,34,23,13,22,1,17";
var myString2 = "12 34 23 13 22 1 17";

document.getElementById('log').innerHTML += '<br/>with commas: ' + replaceItem(myString, 1, 99);
document.getElementById('log').innerHTML += '<br/>with spaces: ' + replaceItem(myString2, 1, 99);

function replaceItem(string, needle, replace_by) {
  var deliminator = ',';
  // split the string into an array of items
  var items = string.split(',');
    // >> I'm dealing with a string separated by either commas or spaces
  // so if split had no effect (no commas found), we try again with spaces
  if(! (items.length > 1)) {
    deliminator = ' ';
    items = string.split(' ');
  }
  for(var i=0; i<items.length; i++) {
    if(items[i] == needle) {
      items[i] = replace_by;
    }
  }
  return items.join(deliminator);
}
</script>