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,并且既不是String也不阵列的char以'\ u0000'(NUL字符)结尾。

这会是罪魁祸首的时髦人物?

现在我们谈论的是完全不同的东西,即字符串如何在屏幕上呈现。事实是,即使“你好世界!”如果你使用dingbats字体会看起来很时髦。 unicode字符串在一个语言环境中可能看起来很时髦,但在另一个语言环境中可能看起来很时髦即使是一个正确渲染的包含中文字符的unicode字符串,对于来自格陵兰岛的某些人来说仍然会显得很怪异。

也就是说,空字符可能看起来很时髦;通常它不是你想要显示的角色。也就是说,由于null字符不是字符串终止符,因此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、付费专栏及课程。

余额充值