替换字符而不替换字符串中''内的任何内容

nee*_*eru 2 javascript

我有一个字符串说例如

var str = "this is 'a simple' a simple 'string' string"
Run Code Online (Sandbox Code Playgroud)

我想替换所有's'字符,例如'p'字符.

str =  "thip ip 'a simple' a pimple 'string' ptring"
Run Code Online (Sandbox Code Playgroud)

接近这个的正确方法是什么?

Ben*_*aum 5

我们将它分解为令牌并以良好的方式解析它:

  • 一次查看字符串一个字符
  • 如果您在'更换时遇到将状态设置为"不替换",否则将其设置为替换.
  • 当您遇到s并且您的州正在更换时,请将其替换为p

此解决方案不支持嵌套'.

var tokens = yourString.split("");
var inQuotes = false;
for(var i=0;i<tokens.length;i++){
    if(tokens[i] == "'"){
        inQuotes = !inQuotes;
    }else 
    if(!inQuotes && tokens[i] == 's'){
        tokens[i] = 'p'
    }
}

var result = tokens.join("");
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴