我已经看过这种问题的多个实例,但不是我正在寻找的那个问题...(我只是希望我不是绝望的盲人!:P)
让我们考虑一下这段代码:
var oneString = "This is a string";
document.write(oneString.replace("is", ""));
我原以为输出会是:
This a string.
但这是我得到的输出:
This a string
就像replace()认为发送的第二个参数是“”而不是“”......那么剥离给定字符串的正确方法是什么,而不会在输出中浮动多余的空格? / p>
答案 0 :(得分:3)
你实际上是用一个空字符串替换“is”,它是之前的空间和之后的 你更换的那个空间是两个空格你看到。尝试;
oneString.replace("is ", "")
答案 1 :(得分:1)
var aString = "This is a string";
var find = "is"; // or 'This' or 'string'
aString = aString.replace(new RegExp("(^|\\s+)" + find + "(\\s+|$)", "g"), "$1");
console.log(oneString);
唯一一个不完美的情况是当你替换句子中的 last 字时。它最后会留下一个空格,但我想你可以检查一下。
g
修饰符是让replace
替换所有实例,而不仅仅是第一个实例。
添加i
修饰符,使其不区分大小写。
如果您还希望将其用于以下字符串:
"This has a comma, in it"
将正则表达式更改为:
var find = "comma";
new RegExp("(^|\\s+)" + find + "(\\s+|$|,)", "g")
答案 2 :(得分:1)
你确定你没有得到“这是一个字符串”吗?
我认为您应该将“is”替换为“”以获得所需的输出。在此之前和之后都有一个空格。
答案 3 :(得分:1)
查看原始字符串 - “This_is_a_string”(我用下划线替换了空格)。当您删除“是”时,您不会触及任何周围的空格,因此两者都会在输出中结束。你需要做的是oneString.replace("is","").replace(/ +/," ")
- 摆脱“是”,然后消除任何双重空格。如果你想保留一些双倍的空格,试试oneString.replace(" is","")
,但是如果字符串以is开头就会遇到问题(例如“它安全吗?”)。
最佳答案可能是像oneString.replace(/is ?/,"") to match is possibly followed by a space or
oneString.replace(/?是?/,“”)匹配的东西可能被空格包围,并用一个空格替换所有这些。
答案 4 :(得分:1)
您的模式中没有包含任何空格。当我在Chrome中尝试您的代码时,我得到:
> "This is a string".replace("is","")
"Th is a string"
实现您正在尝试的方法的一种方法是使用正则表达式:
> "This is a string".replace(/is\s/,"")
"This a string"