QML如何在不截断单词的前提下动态指定长度截取字符串
问题原因
你代码的问题出在RegExp构造函数的语法使用错误,存在两个问题:
- 使用RegExp构造函数时,传入的正则字符串不需要包含字面量写法的前后斜杠
/,你多写了前后斜杠导致正则匹配规则完全失效,永远匹配不到内容,因此replace不会修改原字符串。 - 正则中的空白符匹配规则
\s写在普通字符串中时需要转义,要写成\\s,否则字符串解析阶段会丢失反斜杠,最终正则实际匹配的是普通字符s,逻辑错误。
解决方案
将lastTextPreview的text属性赋值修改为以下代码即可:
text: lastText.replace(new RegExp("^(.{" + lastTextMaxLen + "}[^\\s]*).*"), "$1")
修改后你可以随意调整lastTextMaxLen的数值,截断功能会正常生效,且不会切断单词。
内容的提问来源于stack exchange,提问作者Chris Ray
相关产品推荐
相关产品推荐

