javanul字符_Java字符串替换和NUL(NULL,ASCII0)字符?⽤空字符替换字符串中的字符甚⾄可以⽤Java⼯作吗?我知道'\0'将终⽌C字符串。
这取决于你如何定义什么是有效的。它是否⽤替换所有出现的⽬标字符replaceall()
'\0'
是吗?当然!
String s = "food".replace('o', '\0');
System.out.println(s.indexOf('\0')); // "1"
System.out.println(s.indexOf('d')); // "3"
System.out.println(s.length()); // "4"
System.out.println(s.hashCode() == 'f'*31*31*31 + 'd'); // "true"
我觉得⼀切都很好!
indexOf
可以到它,它作为长度的⼀部分计数,其哈希代码计算值为0;所有内容都由jls/api指定。
它
不
如果希望⽤空字符替换字符,可以从字符串中删除该字符。当然不是这样的。空字符仍然是字符!
String s = String('\0');
System.out.println(s.length()); // "1"
assert s.charAt(0) == 0;
它也
不
如果希望空字符终⽌字符串,请执⾏此操作。从上⾯的⽚段中可以明显看出,但在JLS中也有明确的规定。(
10.9. An Array of Characters is Not a String
):
在Java编程语⾔中,不同于C,⼀个数组
char
不是
String
⽽且两者都不是
弦
也没有数组
烧焦
以“u0000”(nul字符)结尾。
这会是那些古怪⼈物的罪魁祸⾸吗?
现在我们讨论的是⼀个完全不同的问题,即字符串在屏幕上的呈现⽅式。事实是,即使是“你好,世界!”如果你⽤丁巴字体的话会很奇怪。⼀个Unicode字符串在⼀个区域设置中可能看起来很奇怪,但在另⼀个区域设置中却不⼀定。对于格陵兰岛的⼈来说,即使是⼀个正确呈现的Unicode字符串,⽐如说,包含汉字,也可能看起来很奇怪。
也就是说,空字符可能会看起来很奇怪;通常它不是您想要显⽰的字符。也就是说,由于空字符不是字符串终⽌符,Java⽆法以某种⽅式处理它。
现在要解决我们假定的预期效果,即从字符串中删除所有句点,最简单的解决⽅案是使⽤
replace(CharSequence, CharSequence)
超载。
System.out.println("A.E.I.O.U".replace(".", "")); // AEIOU
这个
replaceAll
这⾥也提到了解决⽅案,但这适⽤于正则表达式,这就是为什么您需要转义点元字符,并且可能会变慢。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论