regex - 使用正则表达式消除谷歌应用程序脚本中的换行符

标签 regex replace google-apps-script newline

我正在尝试为 Google Docs 编写一个附加组件的一部分,使用 replaceText 消除所选文本中的换行符。 .明显的text.replaceText("\n","");给出错误 Invalid argument: searchPattern .我在 text.replaceText("\r",""); 上遇到了同样的错误.以下尝试无效:text.replaceText("/\n/",""); , text.replaceText("/\r/",""); .我不知道为什么 Google App Script 不允许识别正则表达式中的换行符。

我知道已经有一个附加组件可以做到这一点,但我想将此功能合并到我的附加组件中。

即使使用基本的,也会发生此错误

DocumentApp.getActiveDocument().getBody().textReplace("\n","");

我的完整功能:
function removeLineBreaks() {

var selection = DocumentApp.getActiveDocument().getSelection();
if (selection) {
    var elements = selection.getRangeElements();
    for (var i = 0; i < elements.length; i++) {
        var element = elements[i];

        // Only deal with text elements

        if (element.getElement().editAsText) {
            var text = element.getElement().editAsText();

            if (element.isPartial()) {
                text.replaceText("\n","");
            }

            // Deal with fully selected text
            else {
                text.replaceText("\n","");
            }
        }
    }
}

// No text selected
else {
    DocumentApp.getUi().alert('No text selected. Please select some text and try again.');
}

}

最佳答案

似乎在replaceText , 要删除使用 Shift-ENTER 输入的软回车,您可以使用 \v :

.replaceText("\\v+", "")
如果您想删除所有 "other" control characters ( C0, DEL and C1 control codes ),你可以使用
.replaceText("\\p{Cc}+", "")
请注意 \v pattern 是 JavaScript 正则表达式引擎支持的一种结构,被 RE2 regex library 认为匹配垂直制表符(≡ \013)在大多数 Google 产品中使用。

关于regex - 使用正则表达式消除谷歌应用程序脚本中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37771381/

相关文章:

java - 文本在指定长度后拆分,但不要使用 grails 打断单词

sql - Postgresql 替换函数

javascript - 将新行替换为 <br>,不带字符串开头,

regex - 提取某个单词后的数字

java - 匹配多个括号之间的字符串

javascript正则表达式识别所有特殊字符

javascript - 当您不知道 Google Apps 脚本中的名称时,JSON/JS 对象访问 key

javascript - jQuery 替换括号之间的文本

html - HtmlService 中的 href

javascript - 谷歌应用程序脚本中的 ReferenceError : "Drive" is not defined.(第 16 行,文件 "Code")