How to represent empty char in Java Character class

Java

Java Problem Overview


I want to represent an empty character in Java as "" in String...

Like that char ch = an empty character;

Actually I want to replace a character without leaving space.

I think it might be sufficient to understand what this means: no character not even space.

Java Solutions


Solution 1 - Java

You may assign '\u0000' (or 0). For this purpose, use Character.MIN_VALUE.

Character ch = Character.MIN_VALUE;

Solution 2 - Java

char means exactly one character. You can't assign zero characters to this type.

That means that there is no char value for which String.replace(char, char) would return a string with a diffrent length.

Solution 3 - Java

As Character is a class deriving from Object, you can assign null as "instance":

Character myChar = null;

Problem solved ;)

Solution 4 - Java

An empty String is a wrapper on a char[] with no elements. You can have an empty char[]. But you cannot have an "empty" char. Like other primitives, a char has to have a value.

You say you want to "replace a character without leaving a space".

If you are dealing with a char[], then you would create a new char[] with that element removed.

If you are dealing with a String, then you would create a new String (String is immutable) with the character removed.

Here are some samples of how you could remove a 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);
	
}

Solution 5 - Java

As chars can be represented as Integers (ASCII-Codes), you can simply write:

char c = 0;

The 0 in ASCII-Code is null.

Solution 6 - Java

If you want to replace a character in a String without leaving any empty space then you can achieve this by using StringBuilder. String is immutable object in java,you can not modify it.

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

Solution 7 - Java

In java there is nothing as empty character literal, in other words, '' has no meaning unlike "" which means a empty String literal

The closest you can go about representing empty character literal is through zero length char[], something like:

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

If you refer to String class its default constructor creates a empty character sequence using new char[0]

Also, using Character.MIN_VALUE is not correct because it is not really empty character rather smallest value of type character.

I also don't like Character c = null; as a solution mainly because jvm will throw NPE if it tries to un-box it. Secondly, null is basically a reference to nothing w.r.t reference type and here we are dealing with primitive type which don't accept null as a possible value.

Assuming that in the string, say str, OP wants to replace all occurrences of a character, say 'x', with empty character '', then try using:

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

Solution 8 - Java

I was looking for this. Simply set the char c = 0; and it works perfectly. Try it.

For example, if you are trying to remove duplicate characters from a String , one way would be to convert the string to char array and store in a hashset of characters which would automatically prevent duplicates.

Another way, however, will be to convert the string to a char array, use two for-loops and compare each character with the rest of the string/char array (a Big O on N^2 activity), then for each duplicate found just set that char to 0..

...and use new String(char[]) to convert the resulting char array to string and then sysout to print (this is all java btw). you will observe all chars set to zero are simply not there and all duplicates are gone. long post, but just wanted to give you an example.

so yes set char c = 0; or if for char array, set cArray[i]=0 for that specific duplicate character and you will have removed it.

Solution 9 - Java

You can't. "" is the literal for a string, which contains no characters. It does not contain the "empty character" (whatever you mean by that).

Solution 10 - Java

char ch = Character.MIN_VALUE;

The code above will initialize the variable ch with the minimum value that a char can have (i.e. \u0000).

Solution 11 - Java

this is how I do it.

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

Solution 12 - Java

You can do something like this:

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

Solution 13 - Java

You can only re-use an existing character. e.g. \0 If you put this in a String, you will have a String with one character in it.


Say you want a char such that when you do

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

what you have to do instead is

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

Solution 14 - Java

Use the \b operator (the backspace escape operator) in the second parameter

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

Solution 15 - Java

String before = EMPTY_SPACE+TAB+"word"+TAB+EMPTY_SPACE

Where EMPTY_SPACE = " " (this is String) TAB = '\t' (this is Character)

String after = before.replaceAll(" ", "").replace('\t', '\0') means after = "word"

Solution 16 - Java

Hey i always make methods for custom stuff that is usually not implemented in java. Here is a simple method i made for removing character from 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();
    }

For explaintion, yes there is no null character for replacing, but you can remove character like this. I know its a old question, but i am posting this answer because this code may be helpful for some persons.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionrahulsriView Question on Stackoverflow
Solution 1 - JavaKV PrajapatiView Answer on Stackoverflow
Solution 2 - JavaJimmy T.View Answer on Stackoverflow
Solution 3 - Javauser3001View Answer on Stackoverflow
Solution 4 - JavasudocodeView Answer on Stackoverflow
Solution 5 - JavaThomasView Answer on Stackoverflow
Solution 6 - Javauser2688394View Answer on Stackoverflow
Solution 7 - JavasactiwView Answer on Stackoverflow
Solution 8 - JavaEmeka OnwuliriView Answer on Stackoverflow
Solution 9 - JavajarnbjoView Answer on Stackoverflow
Solution 10 - JavaHüseyin Burhan ÖZKANView Answer on Stackoverflow
Solution 11 - JavadukekosyView Answer on Stackoverflow
Solution 12 - JavaKayVView Answer on Stackoverflow
Solution 13 - JavaPeter LawreyView Answer on Stackoverflow
Solution 14 - JavaKevin SilvaView Answer on Stackoverflow
Solution 15 - JavaStefanidisView Answer on Stackoverflow
Solution 16 - JavaDiljeetView Answer on Stackoverflow