当前位置: 首页 > 面试题库 >

Java字符串替换和NUL(NULL,ASCII 0)字符?

唐腾
2023-03-14
问题内容

测试其他人的代码后,我注意到一些JSP页面打印了时髦的非ASCII字符。深入了解源代码,我发现了这个花絮:

// remove any periods from first name e.g. Mr. John --> Mr John
firstName = firstName.trim().replace('.','\0');

在Java中用null字符替换String中的字符是否还能工作?我知道这'\0'将终止C字符串。这是时髦人物的罪魁祸首吗?


问题答案:

在Java中用null字符替换String中的字符是否还能工作?我知道’\ 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指定。

DOES NOT 如果你希望用空字符替换字符会以某种方式删除的字符串的字符工作。当然,它不是那样工作的。空字符仍然是字符!

String s = Character.toString('\0');
System.out.println(s.length()); // "1"
assert s.charAt(0) == 0;

它还 DOES NOT
如果你希望空字符终止字符串工作。从上面的代码片段可以明显看出,但是JLS(10.9。字符数组不是String)中也明确指定了它:

在Java编程语言中,与C不同,of的数组char不是a String,并且a String或of的数组都不char以“ \
u0000”(NUL字符)终止。

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

现在,我们谈论的是完全不同的事情,即字符串如何在屏幕上呈现。事实是,甚至是“ Hello world!”
如果您使用dingbats字体,它将看起来很时髦。unicode字符串在一种语言环境中看起来可能很时髦,而在另一种语言环境中却看起来很时髦。即使是正确渲染的包含汉字的unicode字符串,对于格陵兰岛的人来说仍然看起来很时髦。

也就是说,无论如何,空字符都可能看起来很时髦。通常它不是您要显示的字符。就是说,由于空字符不是字符串终止符,因此Java能够以一种或另一种方式处理它。

现在要解决我们假定的预期效果,即从字符串中删除所有句点,最简单的解决方案是使用replace(CharSequence, CharSequence)重载。

System.out.println("A.E.I.O.U".replace(".", "")); // AEIOU

replaceAll这里也提到了该解决方案,但是该解决方案可与正则表达式一起使用,这就是为什么您需要转义点元字符的原因,并且可能会更慢。



 类似资料:
  • 问题内容: 我有一个以字符串形式传递的句子,我正在对单词“ and”进行替换,我想用“”替换它。而且它不是用空格替换“和”一词。以下是我的逻辑示例。而当我调试此逻辑时,逻辑确实落入了句子。 这里有我想念的东西吗? 问题答案: 而当我调试此逻辑时,逻辑确实落入了句子。 是的,然后你放弃返回值。 Java中的字符串是不可变的-当你调用时,它不会更改现有字符串的内容-它会返回经过修改的新字符串。所以你要

  • 我有以下字符串输出: 但是我想在Java中有如下格式的输出 请帮帮我。 我正在将对象转换为json数据。请参见以下代码 我想将此应用于使用java 7的jsonString变量,就像不使用java 8一样

  • 主要内容:replace() 方法,replaceFirst() 方法,replaceAll() 方法在 Java 中,String 类提供了 3 种字符串替换方法,分别是 replace()、replaceFirst() 和 replaceAll(),本文将详细介绍它们的使用方法。 replace() 方法 replace() 方法用于将目标字符串中的指定字符(串)替换成新的字符(串),其语法格式如下: 其中,oldChar 表示被替换的字符串;newChar 表示用于替换的字符串。repla

  • 本文向大家介绍替换Java字符串中的子字符串,包括了替换Java字符串中的子字符串的使用技巧和注意事项,需要的朋友参考一下 假设以下是我们的字符串。 我们想将子字符串“ Dead”替换为“ Alive”。为此,让我们使用以下逻辑。在这里,我们使用了while循环,并在其中找到了要替换的子字符串的索引。这样,我们一个接一个地替换了整个子字符串。 以下是替换子字符串的完整示例。 示例 输出结果

  • 假设有一段文本里面有很多错误,如错别字。现在使用 Java 中的字符串替换方法对它进行批量修改和纠正,其中就用到了我们在《 Java字符串的替换》一节中学到的 String 类的 replace() 方法、replaceFirst() 方法和 replaceAll() 方法。 创建一个 Java 类,然后在主方法 main() 中编写代码,具体代码如下所示。 运行该程序,输出的正确字符串内容如下:

  • 问题内容: 我目前有一个包含字符A,B和C的字符串,例如,该字符串看起来像 其他不包含A,B或CI的随机变量想分别用“ A”,“ B”和“ C”替换A,B和C,这是我目前正在做的最好方法: 问题答案: 如果A,B和C是完全相同的单个字符,cletus的答案就可以正常工作,但是如果它们可以是更长的字符串,而您只是出于示例目的将它们称为A,B和C,则cletus的答案就可以。如果它们是更长的字符串,则