获取Java中已定义字符串的实际长度

获取Java中已定义字符串的实际长度,java,string,Java,String,我将字符串定义为 String s = "\\"; int length = s.length(); // returns 1 System.out.println(s); // prints only one "\" 如何使其大小等于2 UPD:问题不在于获得精确的2号字符串。我需要获得定义字符串的源字符的计数。String s=“\\”仅包含字符\,由于它是一个特殊字符,因此必须使用\字符对其进行转义 为了获得2个大小的字符串,可以转义两个反斜杠,如下所示: String s = "\\\

我将字符串定义为

String s = "\\";
int length = s.length(); // returns 1
System.out.println(s); // prints only one "\"
如何使其大小等于
2

UPD:问题不在于获得精确的2号字符串。我需要获得定义字符串的源字符的计数。

String s=“\\”
仅包含字符
\
,由于它是一个特殊字符,因此必须使用
\
字符对其进行转义

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

String s = "\\\\";
这一个的大小不是
4
,而是
2
,因为编辑器中有一些字符(显然,像反斜杠一样)不是由单个可视元素表示的

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

String mongolianVowelSeparator = "\u180"; <-- one character only, invisible when printed
字符串蒙古语元音分隔符=“\u180” 见:

字符和字符串转义序列允许在字符文本()和字符串文本()中表示一些非图形字符以及单引号、双引号和反斜杠

\\/*\u005c:反斜杠\*/

字符
\
用于:

除了语法所暗示的处理外,对于每个原始输入字符,<强>是反斜杠<代码> \/Cux> <强>,输入处理必须考虑有多少其他的<代码> \>代码>字符在其前面,将其与非代码> > /代码>字符或输入流的开头分开。如果此数字为偶数,则

\
有资格开始Unicode转义;如果数字为奇数,则
\
不符合开始Unicode转义的条件

值得一提的是,您的字符串可以写成:

\u005c
由于如上所述,
005c
\

的Unicode值,“\”是转义字符,加起来不等于字符串的总长度。但是,如果您坚持要将转义字符添加到总长度中,请尝试下面的这段代码

字符串中的每一个“\”将使总长度增加一

String s = "\\";
int length = s.length();

for(int i = 0; i < s.length; i++)
   if(s.charAt(i) == '\')
      length++;
String s=“\\”;
int length=s.length();
对于(int i=0;i
使用来自的CharConverter。你可以根据你的项目来调整。它有一个方法将字符串中的所有转义字符转换回真正的Java输入

String str1 = "\\";
String str2 = CharConverter.escapeString(str1);
System.out.println(str2.length());   // prints 2

你试过打印字符串了吗。。只是为了确保您的理解是正确的?@SeniorJD请听几个人告诉您的:1是您定义的字符串长度。还值得注意的是,无法区分定义为
“\\”
的字符串文字和定义为
“\u005c”
的字符串文字,因为它们都代表相同的字符串;但是,它们在源代码中的长度不同。@AndyTurner这就是我要问的。所以,没有办法得到我定义字符串的字符数?它们是完全相同的字符串。完全无法区分。唯一可以做到这一点的方法是解析源代码。但是,在这种情况下,我需要将
4
作为答案否,您应该了解,有些字符在代码中表示为一个字符序列。@SeniorJD-不,您不会。`\`在java中有特殊的含义。这被认为是逃跑character@VinodMadyalkar我认为你需要摆脱你的逃避角色…;)@AshwaniKumarRahul我在哪里说过我是新手?我建议你有时候用你的逻辑。无论如何,只要稍微修改一下代码:for(inti=1;i“123\123”
,请重新表述您的请求。我几乎听不懂你的话。