从 java 字符串中删除''



我想从我的java中删除""String
输入:"/Test/Test206"
结果:"/Test/Test206"
怎么做?

您在这里看到的是一个带有八进制值的String

System.out.println(
Arrays.toString(
"/Test/Test206".toCharArray()
)
);
[/, T, e, s, t,

/, T, e, s, t, 2, 0, ]

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

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

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

String s = "/Test/Test206";
System.out.println(s.replaceAll("[\000-\011]", "?"));
/测试

/测试20?

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

String s = "/Test/Test206";
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

要获取替换了"\"的新字符串:

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

希望对您有所帮助。

作为输入"/Test/Test206"""充当转义序列。 但在这种情况下,它充当 ASCII 值。 为了克服你的问题,你的字符串投射到字符数组。 然后提取它的最后一个值并将其转换为 int。

溶液:

String s = "/Test/Test206";
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.trim()应该有效 - 但不能string.strip()

相关内容

  • 没有找到相关文章

最新更新