【发布时间】:2021-02-19 13:45:09
【问题描述】:
我正在为一个安卓应用程序添加搜索/替换功能。
我希望用户能够使用正则表达式进行搜索和替换。搜索功能正常工作,但替换字符串 \n 中的换行符被解释为文字“n”。
这是我的代码正在做的事情:
Pattern.compile(search.getText().toString()).matcher(text).replaceAll(replace.getText().toString())
给定
- 文本是
CharSequence,内容为A \n\n\nB(注意“A”后面的尾随空格) -
search是一个包含\s+\n内容的文本框 -
replace是一个文本框,内容为\n。
我希望上面代码的结果是 text = A\n\n\nB(删除了尾随空格)。
结果是 text = An\n\nB。即replace 文本框中的\n 被解释为文字'n'。
我想知道如何才能读取replace 的内容,以便\n 被解释为换行符。
请注意,我可以通过 捕获 换行符来实现示例中的预期结果,例如 search = \s+(\n) 和 replace = $1。然而,这不是问题。
出于本次讨论的目的,我只考虑 Unix 行尾。
编辑:
使用 replace contents = \\n 会插入文字 '\n'。
即
A
B
转化为
A\n
B
【问题讨论】:
-
我认为您可以使用stackoverflow.com/a/4298836 解决方案。
-
感谢@WiktorStribiżew。调查这个