在谷歌脚本中用条件替换字符串

时间:2016-05-24 10:00:46

标签: javascript regex

谷歌脚本中的

我试图根据它后面的字符替换%字符串。

我尝试过使用:

var indexOfPercent = newString.indexOf("%"); 

然后检查indexOfPercent+1的字符,但indexOf仅返回第一次出现的'%'。

我怎样才能得到所有事件?也许有更简单的方法(正则表达式)?

编辑:

最后,我想将%次出现的所有内容替换为%%,但如果百分号是%@%@的一部分,则不会。

总结一下:我的字符串:Test%@ Test2%s Test3%.应如下所示:Test%@ Test2%s Test3%%.

我尝试过这样的事情:

  //?!n Matches any string that is not followed by a specific string n
  //(x|y)   Find any of the alternatives specified
  var newString = newString.replace(\%?![s]|\%?![%], "%%")

但它没有发现任何字符串。我不熟悉正则表达式,所以也许这是一个简单的错误。

由于

1 个答案:

答案 0 :(得分:1)

试试这段代码:

// replace all '%'
var StrPercent = '%100%ffff%';
var StrNoPersent = StrPercent.replace(/\%/g,'');
Logger.log(StrNoPersent); // 100ffff

寻找more info here

修改

在您的情况下,您需要RegEx,其中字符后面没有字符组。这里有一个类似的问题:

Regular expressions - how to match the character '<' not followed by ('a' or 'em' or 'strong')?

你的代码:

function RegexNotFollowedBy() {

var sample = ['Test%@',
              'Test2%s',
              'Test3%',
              '%Test4%'];

var RegEx = /%(?!s|@)/g;
var Replace = "%%";

var str, newStr;

  for (var i = 0; i < sample.length; i++) {
      str = sample[i];
      newStr = str.replace(RegEx, Replace);
      Logger.log(newStr);

  }

}

我将解释表达式/%(?!s|@)/g

  • % - 看'%'
  • (text1|text2|text3...|textN) - 没有后跟text1,2等。
  • g - 寻找任何搜索文本的准确性