我遇到了问题,我正在尝试在JavaScript中使用替换函数,但我无法使其工作。 我正在使用:
var pagename = projectname.replace (" ", "");
但它只需要第一个空间,我想占用所有空间。例如:
“我的第一个项目1”=“Myfirstproject1”,即把所有东西放在一起。
我正在开发谷歌应用程序的脚本。
谢谢。
答案 0 :(得分:5)
你应该尝试:
var pagename = projectname.replace (/\s/g, '');
正则表达式末尾的g
是一个标志,指示替换方法不应仅替换第一次出现的空格字符。
答案 1 :(得分:1)
您可以在其他功能之外使用此代码。
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(" " , "");
结果:HelloWorld
答案 2 :(得分:1)
很遗憾,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);
}
我们也可以将它添加到 string 类中,但我建议测试它是否已经存在,以防它可能会添加到更高版本的 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/