拆下'\0';来自java字符串

拆下'\0';来自java字符串,java,null,backslash,Java,Null,Backslash,我想从我的java字符串中删除“\0” 输入:“/Test/Test20\06” 结果:“/Test/Test206” 如何操作?要替换带有“\”的新字符串: newStringName = oldStringName.replace("\\", ""); 希望有帮助。这里有一个八进制值的字符串 System.out.println( Arrays.toString( "/Test/Test20\06".toCharArray() ) ); [/,T,e,s,

我想从我的java
字符串中删除
“\0”
输入:
“/Test/Test20\06”

结果:
“/Test/Test206”


如何操作?

要替换带有“\”的新字符串:

newStringName = oldStringName.replace("\\", "");

希望有帮助。

这里有一个八进制值的
字符串

System.out.println(
    Arrays.toString(
        "/Test/Test20\06".toCharArray()
    )
);
[/,T,e,s,T,/,T,e,s,T,2,0,]

最后一个字符不打印,因为数值为
6
(\06`八进制),并且不是可见字符。这是ACK字符

因此,您将无法使用正则表达式或
字符串
替换方法替换
\0
,因为这不是
字符串
,而是字符表示的一部分

我们可以用正则表达式替换一些字符来确认这一点(不是您想要的解决方案,只是为了演示)

/测试/测试20

因此,您可以使用
模式
捕获这些值,并根据需要进行转换。这是一个不安全的解决方案(正则表达式仅与八进制在末尾的情况相匹配)

String s = "/Test/Test20\06";
Pattern p = Pattern.compile("(.*?)([\\000-\\011])");
Matcher m = p.matcher(s);

StringBuilder sb = new StringBuilder();
while(m.find()){
    sb.append(m.group(1)).append("" + (int)(m.group(2).charAt(0)));
}
System.out.println(Arrays.toString(sb.toString().toCharArray()));
[/,T,e,s,T,/,T,e,s,T,2,0,6]

或在文本中:

/测试/测试206

作为您的输入,
“/Test/Test20\06”
“\”
充当转义序列。但在本例中,它充当ASCII值。要解决此问题,请将字符串转换为字符数组。然后提取最后一个值并将其转换为int

解决方案:

String s = "/Test/Test20\06";
char[] c= s.toCharArray();
String ss="";
for(int i= 0; i<c.length-1;i++){
  ss+=c[i];
}
ss+=(int)c[c.length-1];
System.out.println(ss); 
String s=“/Test/Test20\06”;
char[]c=s.toCharArray();
字符串ss=“”;

对于(int i=0;i,正如其他人已经指出的,从字符串中删除
\0
将损坏其内容


作为旁注,如果需要删除字符串周围的
\0
字符串终止字符,
string.trim()
应该可以工作,但不能
string.strip()

最后的5是从哪里来的?无论如何,请寻找
替换
方法
String
还有,您好,欢迎来到StackOverflow。请花一些时间阅读帮助页面,特别是名为和的部分。更重要的是,请阅读。您可能还想了解。对不起,我犯了错误,我会的喜欢替换\from string“/Test/Test20\06”,结果必须是“/Test/Test206”。替换方法没有给出正确的结果…我的输入不是“/Test/Test20\\06”。我的输入来自外部系统,澄清一下是“/Test/Test20\06”:您有一个带有反斜杠、零和六个字符的字符串或字符串文本“…\06”其中最后一部分是八进制转义。在C中,有一种方法可以跟踪字符串的结尾,我们使用“\0”字符来表示字符串的结尾。但对于Java,字符串是在Java.lang包中定义的类。所有字符串都使用它进行实例化。string类跟踪已创建的字符串的长度和返回字符串“length”属性中的长度。因此,与C不同,Java中的字符串不会以“\0”字符结尾。如果您知道在哪里查找八进制值,这很容易;)是的。我同意您的看法。我的答案仅与精确给定的输入匹配。抱歉。@AxelH
String s = "/Test/Test20\06";
char[] c= s.toCharArray();
String ss="";
for(int i= 0; i<c.length-1;i++){
  ss+=c[i];
}
ss+=(int)c[c.length-1];
System.out.println(ss);