通配符搜索(如下面文章中详细介绍的示例)会使Word Online崩溃,同时对已安装的MSWord版本也能正常工作
https://docs.microsoft.com/en-us/office/dev/add-ins/word/search-option-guidance
我正在搜索下面的文本:“赞助商应在三十(30)内支付发票”
文本可以跨换行符/分节符,也可以不跨换行符/分节符。因此,我执行通配符搜索,如下所示:'Payment?of?invoices?by?Sponsor?shall?be?made?within?thirty?(30‘
这会导致Word-Online使浏览器崩溃。
有趣的是,下面的代码同时适用于Word Online和MSWord:
‘赞助商应在三十(30)天内支付发票’
'Payment?of?invoices?by?Sponsor?shall?be?made?within?thirty?(30)?days‘
通配符表达式中的未右括号似乎存在问题。
在上面的文章之后,它建议应该用方括号转义括号。以下代码在MSWord中工作正常,但在Word-Online中崩溃:
'Payment?of?invoices?by?Sponsor?shall?be?made?within?thirty?(30‘
更奇怪的是,只有当最后一个字符被转义时,方括号转义才有效。
这在MSWord和Word-Online中都有效:
‘包括?无形的?事物?(’
而这只在MSWord中起作用,会使Word-Online崩溃
包括“无形的”事物?(例如
上面文章中的示例模式‘**’使Word Online崩溃,而在MSWord中却可以正常工作。
input = 'include?intangible?things?[(]e';
const { Word } = window;
Word.run(context => {
const { body } = context.document;
const searchResults = body.search(input, {
matchCase: false,
ignoreSpace: true,
ignorePunct: true,
matchWildcards: true
});
context.load(searchResults);
return context
.sync()
.then(() => {
})
.catch(error => {
});
});通过Office.js应用编程接口执行时,MSWord和Word Online的行为应该相同。
这看起来像Word Online中的错误。我推测这可能与url编码有关。
或者,当目标是Word Online时,我没有正确地编码我的输入模式。在这种情况下,上面提到的文章需要更新,以详细说明特殊字符的在线“转义”是什么。
奇怪的是,转义括号本身就是特殊字符。
发布于 2019-06-25 18:55:15
这不是一个完美的答案,但它一下子解决了Word在线崩溃问题和未闭合括号问题。我将搜索字符串中的所有特殊字符都替换为“?”人物。这可能会导致一段错误的文本,但可能性很低,对于我试图实现的目标来说,这不是一个问题。
function replaceSpecialCharacters(input) {
let modifiedInput = '';
const specialCharacters = ['[', ']', '(', ')', '{', '}', '*', '?', '<', '>', '!', '@'];
[...input].forEach(c => {
if (specialCharacters.includes(c)) {
modifiedInput = `${modifiedInput}?`;
} else {
modifiedInput = `${modifiedInput}${c}`;
}
});
return modifiedInput;
}https://stackoverflow.com/questions/56736859
复制相似问题