java nul 字符_Java字符串替换和NUL(NULL,ASCII 0)字符?

用空字符替换字符串中的字符甚至可以用Java工作吗?我知道'\0'将终止C字符串。

这取决于你如何定义什么是有效的。它是否用替换所有出现的目标字符

'\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 = Character.toString('\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

这里也提到了解决方案,但这适用于正则表达式,这就是为什么您需要转义点元字符,并且可能会变慢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值