如何在Java Character类中表示空字符

我想在Java中将empty character表示为""

像那个char ch = a empty character;

其实我想replace一个字符而不留空间。

我认为这可能足以理解这意味着什么: no character not even space

您可以分配'\u0000' (或0)。 为此,请使用Character.MIN_VALUE

 Character ch = Character.MIN_VALUE; 

char意味着一个字符。 您不能将零个字符分配给此types。

这意味着没有字符值的String.replace(char, char)会返回一个不同长度的string。

由于Character是派生自Object的类,因此可以将null指定为“instance”:

 Character myChar = null; 

问题解决了 ;)

一个空string是一个char[]没有元素的包装。 你可以有一个空的char[] 。 但是你不能有一个“空”的char 。 像其他原始图一样, char必须有一个值。

你说你想“不留空间地replace一个angular色”。

如果你正在处理一个char[] ,那么你将创build一个新的char[] ,并删除该元素。

如果你正在处理一个String ,那么你将创build一个新的String (string是不可变的),并删除该字符。

下面是一些如何删除char的示例:

 public static void main(String[] args) throws Exception { String s = "abcdefg"; int index = s.indexOf('d'); // delete a char from a char[] char[] array = s.toCharArray(); char[] tmp = new char[array.length-1]; System.arraycopy(array, 0, tmp, 0, index); System.arraycopy(array, index+1, tmp, index, tmp.length-index); System.err.println(new String(tmp)); // delete a char from a String using replace String s1 = s.replace("d", ""); System.err.println(s1); // delete a char from a String using StringBuilder StringBuilder sb = new StringBuilder(s); sb.deleteCharAt(index); s1 = sb.toString(); System.err.println(s1); } 

如果你想replace一个string中的字符而不留下任何空的空间,那么你可以通过使用StringBuilder来实现这一点。 string是java中不可变的对象,你不能修改它。

 String str = "Hello"; StringBuilder sb = new StringBuilder(str); sb.deleteCharAt(1); // to replace e character 

你不能。 “”是string的文字,不包含任何字符。 它不包含“空白字符”(不pipe你是什么意思)。

在java中没有什么是空字符 ,换句话说,''没有意义,不像“”,这意味着一个空的string文字

代表空字符字面值的最接近的是通过零长度char [],如下所示:

 char[] cArr = {}; // cArr is a zero length array char[] cArr = new char[0] // this does the same 

如果引用String类,则其默认构造函数使用new char[0]创build一个空字符序列,

此外,使用Character.MIN_VALUE是不正确的,因为它不是真正的空字符,而是types字符的最小值。

我也不喜欢Character c = null; 作为一个解决scheme,主要是因为如果jvm试图解开它,它会抛出NPE。 其次,null基本上是对引用types的引用,在这里我们正在处理不接受null作为可能值的原始types。

您只能重新使用现有的angular色。 例如\0如果你把它放在一个string中,你将会得到一个带有一个字符的string。


说你想要一个char ,当你这样做

 String s = char ch = ? String s2 = s + ch; // there is not char which does this. assert s.equals(s2); 

你必须做的是,而不是

 String s = char ch = MY_NULL_CHAR; String s2 = ch == MY_NULL_CHAR ? s : s + ch; assert s.equals(s2); 

在第二个参数中使用\b运算符(退格转义运算符)

 String test= "Anna Banana"; System.out.println(test); //returns Anna Banana<br><br> System.out.println(test.replaceAll(" ","\b")); //returns AnnaBanana removing all the spaces in the string 

这是我如何做到的。

 char[] myEmptyCharArray = "".toCharArray(); 
 char ch = Character.MIN_VALUE; 

上面的代码将使用char可以拥有的最小值初始化variablesch (即\u0000 )。

作为chars可以表示为整数(ASCII码),你可以简单地写:

 char c = 0; 

ASCII码中的0是null