在Java中,我需要从String中获取任何ASCII字符,但是我在转义方面遇到了问题

mpbci0fu  于 2023-04-28  发布在  Java
关注(0)|答案(2)|浏览(150)

在java中,我从外部资源获取一个String,它是一个 Package 在''中的字符。举个例子。

  • A类
  • B
  • 联系我们
  • '\t'

我希望能够从这个字符串中获得一个字符,在例子中。

  • 一个
  • B
  • 联系我们
  • \t

前两个例子很简单。我只能使用myString。charAt(1)。问题来自特殊字符。如果我使用myString,则使用'\n'。charAt(1)如果我使用myString,我会得到\ while。charAt(2)I get n.
我测试了许多解决方案,但都失败了,包括尝试使用replace删除一个\,或使用许多外部库。

cwdobuhd

cwdobuhd1#

\n和\t是边缘情况,您必须单独处理。例如,您可以在检测到字符串时返回换行符的字符值\n

if(myString.equals("'\\n'")) return 0x0A

0x0A是单个字符中的换行符的编码(在字符串litterals中表示为\n),但是,如果您尝试打印此字符,您将得到一个换行符

dwbf0jvd

dwbf0jvd2#

如果您从输入中阅读文本,其中新的行/制表符表示为文本而不是其ASCII表示,则需要在处理它们之前替换String中的这些字符。一个简单的方法是像这样替换String中的所有匹配字符(注意双反斜杠):

string = string.replace("\\n", "\n").replace("\\t", "\t");

另一种方法是使用外部库,如Apache的StringEscapeUtils

string = StringEscapeUtils.unescapeJava(string);

如果您有一个来自流源的大文本输入,您可以在从流中阅读时动态检测这些字符。

相关问题