Java 确定字符串中是否有转义字符
假设我有Java 确定字符串中是否有转义字符,java,string,escaping,Java,String,Escaping,假设我有 String str="hello\" world\\"; 打印str时,输出为 hello" world\ 13 即使在打印str.length()时,输出也是 hello" world\ 13 有没有办法证明strvalue有转义字符 运行时没有转义字符 转义字符仅以字符串文字形式出现。比如说, String literal = "Some\nEscape\rSequence\\\""; 在编译时,编译器使用实际的二进制表示形式(UTF-8iirc)生成一个String
String str="hello\" world\\";
打印str
时,输出为
hello" world\
13
即使在打印str.length()
时,输出也是
hello" world\
13
有没有办法证明
str
value有转义字符 运行时没有转义字符
转义字符仅以字符串文字形式出现。比如说,
String literal = "Some\nEscape\rSequence\\\"";
在编译时,编译器使用实际的二进制表示形式(UTF-8
iirc)生成一个String
值。JVM直接使用该字符串值
你写的
我认为每当我们打印一个字符串并且输出包含
字符,比如“and\
,那么我们可以得出这样的结论:,
“并且\
被转义了吗
这不是真的,这些字符可能是从文件或其他InputStream
读取的。它们肯定不是在文本文件中转义的。是。
特别是使用ApacheCommons库
这会在每个转义序列前加上反斜杠,并将可变宽度的八进制序列替换为固定宽度的Unicode序列。这意味着每个转义序列将由“\\”两个反斜杠组成,后跟一个{n,b,r,t,f,“,\}或一个“u”字符,再加上四个十六进制[0-f]数字
如果您只想知道原始字符串是否包含转义序列,请在Apache指定的字符串中搜索“\\”。如果您想找到这些序列的位置,则需要更多的操作
有关详细信息,请参见。为什么要这样做?只是curiosity@KugathasanAbimaran-特殊字符!=转义字符。不确定是否可能,但是。@Christian我不知道如何解释“为什么”,只是好奇是否可能。可以检查链接-这意味着我们无法确定字符是否转义?@DnR不是在运行时,不是。那你为什么要这样做呢?没什么重要的。只是想说明hello“world\
实际上是hello\\\
@DnR这是真的,如果String
来自String
文本,并且在运行时无法保证这一点。