如何用JavaScript替换单词?

时间:2018-11-12 16:08:07

标签: javascript

假设我们有一个字符串:“单向有人” 我想将单词“一”替换为单词“二”。

注意:我不希望“某人”或“单向”更改。

我尝试使用str.replace(/ one / g,“ two”); 但是结果是“ Sometwo 2 two-way”

这不是预期的结果... 我想获得“某人两个单向”

任何帮助都将得到认可。谢谢。。。

5 个答案:

答案 0 :(得分:1)

您也可以验证空格:

//var str = "Someone one one-way";
var str = "one one Someone one one-way one,one";

var replace='two';
//using lookahead and lookbehind
var result= str.replace(/(?<=[^a-zA-Z-]|^)one(?=[^a-zA-Z-]|$)/gm , "two");

console.log(result);
//result: two two Someone two one-way two,two

答案 1 :(得分:0)

eval('STR.SPLIT(" ONE ").JOIN(" TWO ")'.toLowerCase())

答案 2 :(得分:-1)

尝试此正则表达式:

\s(one)\s

您可以添加修改以区分大小写。

答案 3 :(得分:-1)

let input = "Someone one one-way"
output = input.split(" ").map((item)=> item ==='one'? 'two' : item).join(" ");
console.log(output)

答案 4 :(得分:-1)

您可以尝试以下方法:

.replace(/\bone\b(?!-)/g , "two")

\b在单词边界上匹配。

(?!-)是一个否定的前瞻,因为如果后跟破折号,您不想替换一个。 \ b将破折号识别为单词边界。

当您遇到类似“ -one”的东西时,还有另一个陷阱。

如果这是一个问题,请使用它:

.replace(/[^-]\bone\b(?!-)/g , function(x){return x.substring(0,1) + 'two'})

理想情况下,您会使用否定的前瞻性,但是当前并非所有浏览器都支持此功能。