如何在Java Character类中表示空char

时间:2011-12-16 12:31:09

标签: java

我想在java中将empty character表示为"" ...

就像char ch = a empty character;

一样

实际上我想在不留空间的情况下替换角色。

我认为理解这意味着什么就足够了:no character not even space

17 个答案:

答案 0 :(得分:115)

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

Character ch = Character.MIN_VALUE;

答案 1 :(得分:66)

char表示一个字符。您不能为此类型指定零个字符。

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

答案 2 :(得分:27)

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

Character myChar = null;

问题解决了;)

答案 3 :(得分:11)

空字符串是char[]上没有元素的包装器。你可以有一个空的char[]。但你不能有一个“空”char。与其他原语一样,char必须具有值。

你说你想“在不留空间的情况下替换角色”。

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

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

以下是一些如何移除字符的示例:

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);

}

答案 4 :(得分:6)

如果要在不留空任何空格的情况下替换字符串中的字符,则可以使用StringBuilder实现此目的。 String是java中的不可变对象,不能修改它。

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

答案 5 :(得分:4)

由于chars可以表示为整数(ASCII-Codes),您可以简单地写:

char c = 0;

ASCII码中的0是null

答案 6 :(得分:2)

你做不到。 “”是字符串的文字,其中包含 no 字符。它不包含“空字符”(无论你的意思是什么)。

答案 7 :(得分:2)

在java中,空字符文字没有任何内容,换句话说,''与#34;"没有任何意义。这意味着空字符串文字

最接近表示空字符文字的方法是通过零长度char [],类似于:

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

如果引用String类,则其默认构造函数使用new char[0]

创建一个空字符序列

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

我也不喜欢Character c = null;作为解决方案,主要是因为如果jvm尝试解除它,它将抛出NPE。其次,null基本上是对w.r.t引用类型的引用,这里我们处理的是原始类型,它不接受null作为可能的值。

假设在字符串中,比如str,OP想要替换所有出现的字符,比如用空字符'',然后尝试使用:

str.replace("x", "");

答案 8 :(得分:1)

我就是这样做的。

char[] myEmptyCharArray = "".toCharArray();

答案 9 :(得分:1)

我正在寻找这个。只需设置char c = 0;,它就可以完美运行。试试吧。

例如,如果您尝试从String中删除重复的字符,则一种方法是将字符串转换为char数组,并存储在字符的哈希集中,这将自动防止重复。

但是,另一种方法是将字符串转换为char数组,使用两个for循环,然后将每个字符与其余的string / char数组进行比较(N ^ 2活动中的Big O),然后找到的每个重复项都将char设置为0。

...并使用new String(char[])将所得的char数组转换为字符串,然后使用sysout进行打印(这全部是java btw)。您将观察到所有设置为零的字符根本就不存在,并且所有重复项都消失了。长篇文章,但只想举一个例子。

因此可以设置char c = 0;,或者对于字符数组,请为该特定重复字符设置cArray[i]=0,您将删除它。

答案 10 :(得分:1)

<filter>
    <filter-name>StaticContentFilter</filter-name>
    <filter-class>com.aaa.bbb.filters.StaticContentFilter</filter-class>


</filter>
<filter-mapping>
    <filter-name>StaticContentFilter</filter-name>
    <url-pattern>/web/*</url-pattern>
</filter-mapping>

上面的代码会使用char可以拥有的最小值(即char ch = Character.MIN_VALUE; )初始化变量ch

答案 11 :(得分:0)

您只能重复使用现有角色。例如\0如果你把它放在一个字符串中,你将拥有一个字符串,其中包含一个字符。


假设您需要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);

答案 12 :(得分:0)

嘿,我总是为自定义的东西制作方法,这些方法通常没有在java中实现。这是我用于从String Fast

中删除字符的简单方法
    public static String removeChar(String str, char c){
        StringBuilder strNew=new StringBuilder(str.length());
        char charRead;
        for(int i=0;i<str.length();i++){
            charRead=str.charAt(i);
            if(charRead!=c)
                strNew.append(charRead);
        }
        return strNew.toString();
    }

为了解释,是的,没有替换的空字符,但你可以删除这样的字符。 我知道这是一个老问题,但我发布了这个答案,因为这段代码可能对某些人有用。

答案 13 :(得分:0)

错误:

String.replace('T', '') ;

正确:

String.replace("T", "");

答案 14 :(得分:0)

您可以执行以下操作:

mystring.replace(""+ch, "");

答案 15 :(得分:0)

在第二个参数

中使用\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

答案 16 :(得分:0)

之前的字符串= EMPTY_SPACE + TAB +“单词” + TAB + EMPTY_SPACE

哪里 EMPTY_SPACE =“”(这是字符串) TAB ='\ t'(这是字符)

= after之后的字符串。replaceAll(“”,“”).replace('\ t','\ 0') 手段 after =“ word”