Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 确定字符串中是否有转义字符_Java_String_Escaping - Fatal编程技术网

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
文本,并且在运行时无法保证这一点。