我正在尝试编写一个删除文本空格的代码。我在 Mac 上编写了这个程序,得到了我需要的结果,但是当在 Windows 上运行相同的代码时,它会将空字符(Ascii 代码 0)打印为空格。
声明:“MetodosComunes.leerTextoPorTeclado()”使用户引入一个字符串并将其分配给变量“textoPuro”。
public static void main(String[] args) {
String textoPuro;
char espacio = ' ';
System.out.println("Introduzca una frase: ");
textoPuro = MetodosComunes.leerTextoPorTeclado();
char[] contenido = new char[textoPuro.length()];
for (int i = 0; i < textoPuro.length(); i++) {
contenido[i] = textoPuro.charAt(i);
if (contenido[i] == espacio) {
contenido[i] = 0;
}
System.out.print(contenido[i]);
}
}
如果我输入“你好吗”...
Mac 操作系统上的结果:“Howareyou”
Windows 上的结果:“你好吗”
在 Windows 中,它实际上进入条件并将空字符分配给该元素,但它仍然是空格。
最佳答案
您应该完全跳过该字符,而不是插入 0
:
int k = 0;
for (int i = 0; i < textoPuro.length(); i++) {
char c = textoPuro.charAt(i);
if (c != espacio) {
contenido[k++] = c;
}
}
System.out.println(String.valueOf(contenido, 0, k));
这只会将非空格字符放入数组中。
关于Java 问题 - Null char 在 Mac OS 上不打印任何字符,但在 Windows 上打印空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59617643/