Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java字符类中表示空字符_Java - Fatal编程技术网

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

如何在Java字符类中表示空字符,java,Java,我想在Java中将空字符表示为字符串中的“” 就像charch=一个空字符 实际上我想在不留空格的情况下替换一个字符 我认为理解这意味着什么就足够了:没有字符,甚至没有空格 只能重复使用现有角色。e、 g.\0如果将其放入字符串中,则将有一个包含一个字符的字符串 假设你想要一个字符,这样当你想要的时候 String s = char ch = ? String s2 = s + ch; // there is not char which does this. assert s.equals

我想在Java中将空字符表示为字符串中的

就像
charch=一个空字符

实际上我想在不留空格的情况下替换一个字符


我认为理解这意味着什么就足够了:没有字符,甚至没有空格

只能重复使用现有角色。e、 g.
\0
如果将其放入字符串中,则将有一个包含一个字符的字符串


假设你想要一个
字符
,这样当你想要的时候

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

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


你不能。“”是字符串的文本,不包含任何字符。它不包含“空字符”(无论您是什么意思)。

由于字符是从对象派生的类,您可以将null指定为“实例”:


问题已解决;)

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

你说你想“在不留空格的情况下替换一个字符”

如果您正在处理一个
char[]
,那么您将在删除该元素的情况下创建一个新的
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);

}

如果希望在不留下任何空白的情况下替换字符串中的字符,则可以使用StringBuilder实现这一点。字符串在java中是不可变的对象,您不能修改它

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

char
仅表示一个字符。不能为此类型分配零个字符


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

在第二个参数中使用
\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
String test=“Anna Banana”;
系统输出打印LN(测试)//返回安娜香蕉

System.out.println(test.replaceAll(“,”\b”)//返回删除字符串中所有空格的结果
我就是这样做的

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

上面的代码将使用字符可以具有的最小值(即
\u0000
)初始化变量
ch

在java中,没有任何内容是空字符文字,换句话说,“”与“”不同,后者指空字符串文字

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

char[] cArr = {};         // cArr is a zero length array
char[] cArr = new char[0] // this does the same
如果您引用字符串类,它的默认构造函数将使用
newchar[0]

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

我也不喜欢
字符c=null
作为一种解决方案,主要是因为如果jvm试图取消装箱,它将抛出NPE。其次,null基本上是对nothing w.r.t引用类型的引用,这里我们处理的是不接受null作为可能值的基元类型

假设在字符串(例如str)中,OP希望将所有出现的字符(例如“x”)替换为空字符“”,然后尝试使用:

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

由于
chars
可以表示为整数(ASCII码),您只需编写:

char c = 0;

ASCII代码中的0是空的,我总是为定制的东西创建方法,这些东西通常不是用java实现的。下面是我为快速从字符串中删除字符而做的一个简单方法

    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();
    }
publicstaticstringremovechar(stringstr,charc){
StringBuilder strNew=新的StringBuilder(str.length());
字符读取;

对于(int i=0;i您可以这样做:

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

我一直在寻找这个。只需设置
char c=0;
,它就能完美工作。试试看

例如,如果试图从字符串中删除重复的字符,一种方法是将字符串转换为字符数组并存储在一组字符中,这将自动防止重复

但是,另一种方法是将字符串转换为字符数组,使用两个for循环,并将每个字符与字符串/字符数组的其余部分进行比较(N^2活动中的一个大O),然后对于找到的每个重复字符,只需将该字符设置为0

…并使用
newstring(char[])
将结果字符数组转换为String,然后使用sysout打印(这都是java btw)。您将观察到设置为零的所有字符都不存在,所有重复的字符都消失了。文章很长,但只想给您一个示例


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

String before=EMPTY\u SPACE+TAB+“word”+TAB+EMPTY\u SPACE

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

字符串after=before.replaceAll(“,”).replace('\t','\0') 方法
在=“word”之后什么意思
它不起作用
?你是说它不可编译吗?在这种情况下,它将是
字符ch='\0';
字符ch=0;
@rahulsri所有字符都是字符,没有一个字符不是字符。你需要弄清楚你真正的需求是什么,并尝试以不同的方式解决它
nul
character是许多特殊字符中的一个,表明它不是真正存在的字符,但它本身仍然是一个字符。“如果上帝能做任何事情,上帝能创造一块即使他不能举起的石头吗?”这与问题类似;您能创建一个非字符的字符吗?显示一个您要执行的替换操作的示例。@rahulsri我看不到您要引用的代码
char c = 0;
    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();
    }
mystring.replace(""+ch, "");