我正在努力更新此功能,该功能目前接收内容并用替代品替换目标的任何实例。
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"。只有在替换数等于数字时才能执行替换,而不是数字的子字符串。
我不明白有关正则表达式需要进行全局替换的评论,我不确定这是否是一个线索?
还值得一提的是,我处理的是以逗号或空格分隔的字符串。
谢谢!
答案 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)
答案 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>