我遇到了一个问题,我试图在 JavaScript 中使用替换函数,但我无法让它工作。我在用着:
var pagename = projectname.replace (" ", "");
但它只占用第一个空间,我想占用所有空间。例子:
“我的第一个项目1”=“Myfirstproject1”,即把所有东西放在一起。
我正在开发谷歌应用程序的脚本。
谢谢你。
我遇到了一个问题,我试图在 JavaScript 中使用替换函数,但我无法让它工作。我在用着:
var pagename = projectname.replace (" ", "");
但它只占用第一个空间,我想占用所有空间。例子:
“我的第一个项目1”=“Myfirstproject1”,即把所有东西放在一起。
我正在开发谷歌应用程序的脚本。
谢谢你。
你应该试试 :
var pagename = projectname.replace (/\s/g, '');
正则g
表达式末尾的 是一个标志,指示 replace 方法不应仅替换第一次出现的空格字符。
您在其他功能之外使用此代码。
String.prototype.replaceAll = function(search, replacement) {
var target = this;
return target.replace(new RegExp(search, 'g'), replacement);
};
然后你可以使用 replaceAll 功能。例子 :
var text = "H e l l o W o r l d";
text = text.replaceAll(" " , "");
结果:你好世界
不幸的是,replaceAll
在 Google AppScript 中不可用。您可以使用RegExp
版本replace
来实现replaceAll
. 如果您想创建某种通用解决方案,您需要从特殊RegExp
字符中转义主题,因为像.^
(和许多其他)这样的符号在正则表达式中具有特殊含义。
function strReplaceAll(subject, search, replacement) {
function escapeRegExp(str) { return str.toString().replace(/[^A-Za-z0-9_]/g, '\\$&'); }
search = search instanceof RegExp ? search : new RegExp(escapeRegExp(search), 'g');
return subject.replace(search, replacement);
}
我们也可以将它添加到字符串类中,但我建议测试是否已经在这里,以防它可能会添加到更高版本的 Google AppScript 中。
if (String.prototype['replaceAll'] == null) {
String.prototype['replaceAll'] = function(search, replacement) {
return strReplaceAll(this, search, replacement)
};
}
另外,请注意,$
这在替换字符串中具有特殊含义replaceAll
(JavaScript 也以这种方式工作)。因此,在纯文本到文本替换的情况下,您可能需要额外的函数escapeReplacementString
来处理这个问题(这个函数在 JavaScript 中也很有用)。
function escapeReplacementString(str) { return str.toString().replace(/\$/g, '$$$&'); }
所以通用的文本到文本替换将是这样的text.replaceAll(search, escapeReplacementString(replace))
:
var text = 'Money is +'; search = '+'; replace = '$& and $$';
console.log(text.replaceAll(search, replace)); // gives you 'Money is + and $' [?!]
console.log(text.replaceAll(search, escapeReplacementString(replace))); // gives 'Money is $& and $$'
更多:https ://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll
JSFiggle 游乐场:https ://jsfiddle.net/r8geycLq/