获取Java中定义的String的实际长度

Sen*_*rJD 5 java string

我把String定义为

String s = "\\";
int length = s.length(); // returns 1
System.out.println(s); // prints only one "\"
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它的大小等于2

UPD:问题不在于获得完全2个大小的字符串.我需要得到我已经定义了我的String by的源字符数.

Kon*_*kov 10

String s = "\\";只包含字符\,因为它是一个特殊\字符,它必须与字符一起转义.

为了获得2个大小的String,你可以转义两个反斜杠,如下所示:

String s = "\\\\";
Run Code Online (Sandbox Code Playgroud)

这个没有大小4,但是2,因为有一些字符(很明显,就像反斜杠一样)在编辑器中没有由单个视觉元素表示.

还有一些字符,在打印时可以完全不可见(如蒙古语元音分隔符),但在源代码中以不同的方式表示(通过Unicode代码).例如,蒙古语元音分隔符可以表示为:

String mongolianVowelSeparator = "\u180"; <-- one character only, invisible when printed
Run Code Online (Sandbox Code Playgroud)

所以这里我们只有一个字符(U+180EUnicode字符),但是我们使用了五个编辑器字符来表示它.


Arc*_*ord 2

使用DrJava的 CharConverter 。您可以根据您的项目调整源代码。它有一个方法可以将字符串中的所有转义字符转换回真正的 Java 输入。

String str1 = "\\";
String str2 = CharConverter.escapeString(str1);
System.out.println(str2.length());   // prints 2
Run Code Online (Sandbox Code Playgroud)