1

我的问题是我从文件中读取文本在文本文件中有一些类似的文本

Base64.valueOf("\030)?8*\"q1;16=\0331:?5/8~:8(6y", 42 - -33))

我能够使用正则表达式获取文本

\030)?8*\"q1;16=\0331:?5/8~:8(6y

但字符串在下面的语句中是相等的

regText = "\\030)?8*\\"q1;16=\\0331:?5/8~:8(6y"

但我想要的确切字符串是

expectedText = "\030)?8*\"q1;16=\0331:?5/8~:8(6y"

那么如何将 regText 转换为 expectedText

这里,它几乎达到了我的预期

除了不是将“\030”转为“\030”而是转为“030”

4

2 回答 2

1

如果写入文件的程序从一开始就正确写入数据,您的问题就会变得更容易。如果这不可能,请使用 apache commons lang 中的 StringEscapeUtils。

System.out.println(StringEscapeUtils.unescapeJava("New line: \\n Tab: \\t"));

该调用手动处理 \n 并将其转换为换行符。它只处理文字。对于八进制和其他转义,您只能靠自己。您总是可以分叉代码并处理八进制数。

于 2013-04-06T09:03:01.330 回答
0

通过使用String#replaceAll您可以执行以下操作:

expectedText = regText.replaceAll("\\\\", "\\");

这会将字符串中的双反斜杠替换为regText您期望的简单反斜杠。

于 2013-04-06T08:09:07.007 回答