2

我想知道是否可以替换某些字符串,但不能替换其他在 javascript 中包含相同值的字符串。例如,假设我有文本A AB并且只想替换独立A而不是 AB 中的 A。(注意:我知道在这种情况下我可以手动执行此操作,但我计划在大文本块中使用这样的场景)是否有算法或内置的 js 命令来执行此操作?

4

4 回答 4

7

使用带有单词边界的正则表达式。

var str = 'A AB';
str = str.replace(/\bA\b/g, '');
于 2012-07-27T05:24:47.240 回答
0

除了其他答案,您还可以写: string=string.replace(/a(?=\s)/,""); (?= 表示只有在下一个字符是空格/制表符等时才会替换 'a'。如果您需要其他条件,也可以编写不同的正则表达式而不是 \s (只有 'a' 会匹配,而不是条件(?=...) 中的正则表达式

对于评论中的其他问题(在 Asaph 答案中),您可以写:

str = str.replace(RegExp("\\b"+x+"\\b",'g'),'');

于 2012-07-27T13:42:03.457 回答
0

如果您只想替换独立的字母“A”,那么您可能需要以下内容:

var re = /(^|\s)a(\s|$)/ig;

然后你可以这样做:

var s = 'A ab a ba a-b b-a a:v b a';
alert(s.replace(re, 'Z')); // ZabZba a-b b-a a:v bZ

请注意,这也会删除字母周围的空白。

编辑

保留空格:

alert( s.replace(re, '$1Z$2') ); // Z ab Z ba a-b b-a a:v b Z
于 2012-07-27T05:45:53.817 回答
0

您可以使用 javascript 中的正则表达式来实现这一点,

string = string.replace(/A/, "AB")

将替换第一次出现的字符。

string = string.replace(/A/g, "AB")

将所有出现的“A”替换为“AB”

于 2012-07-27T05:23:20.517 回答