Как представить пустой char в Java Character class

Я хочу представить пустой символ в Java как "" в строке...

Вот так char ch = an empty character;

На самом деле я хочу заменить персонажа, не оставляя пробела.

Я думаю, что этого может быть достаточно, чтобы понять, что это значит: ни одного персонажа, ни даже пространства.

Ответ 1

Вы можете назначить '\u0000' (или 0). Для этого используйте Character.MIN_VALUE.

Character ch = Character.MIN_VALUE;

Ответ 2

char означает ровно один символ. Вы не можете назначить нулевые символы этому типу.

Это означает, что нет значения char, для которого String.replace(char, char) будет возвращать строку с разной длиной.

Ответ 3

Поскольку Character является классом, происходящим из Object, вы можете назначить null как "экземпляр":

Character myChar = null;

Проблема решена;)

Ответ 4

Пустая строка является оберткой на char[] без элементов. У вас может быть пустой char[]. Но вы не можете иметь "пустой" char. Как и другие примитивы, значение char должно иметь значение.

Вы говорите, что хотите "заменить символ, не покидая пробела".

Если вы имеете дело с char[], вы должны создать новый char[] с удаленным элементом.

Если вы имеете дело с String, тогда вы создадите новый 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);

}

Ответ 5

Если вы хотите заменить символ в String, не выходя из какого-либо пустого пространства, вы можете добиться этого, используя StringBuilder. String - неизменяемый объект в java, вы не можете его изменить.

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

Ответ 6

Поскольку chars может быть представлен как целые (ASCII-коды), вы можете просто написать:

char c = 0;

0 в ASCII-коде null.

Ответ 7

Вы не можете. "- буква для строки, которая не содержит символов. Он не содержит" пустой символ" (что бы вы ни подразумевали под этим).

Ответ 8

В Java нет ничего, как пустой символьный литерал, другими словами, '' не имеет значения в отличие от "", что означает пустой строковый литерал

Самое близкое, что вы можете сделать для представления пустого символьного литерала, - через символ нулевой длины [], что-то вроде:

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 хочет заменить все вхождения символа, скажем 'x', на пустой символ '', затем попробуйте использовать:

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

Ответ 9

вот как я это делаю.

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

Ответ 10

char ch = Character.MIN_VALUE;

В приведенном выше коде инициализируется переменная ch с минимальным значением, которое может иметь a char (т.е. \u0000).

Ответ 11

Я искал это. Просто установите char c = 0;, и он отлично работает. Попробуй.

Например, если вы пытаетесь удалить повторяющиеся символы из строки, одним из способов будет преобразование строки в массив символов и сохранение в хэш-наборе символов, что автоматически предотвратит дублирование.

Однако другим способом будет преобразование строки в массив char, использование двух циклов for и сравнение каждого символа с остальной частью массива string/char (действие Big O on N ^ 2), а затем для каждого найденного дубликата. просто установите этот символ на 0..

... и использовать new String(char[]) для преобразования полученного массива char в строку, а затем sysout для печати (это все, кстати, java). вы увидите, что все символы, установленные на ноль, просто отсутствуют, а все дубликаты исчезли. длинный пост, но просто хотел привести вам пример.

так что да, установите char c = 0; или, если для массива char, установите cArray[i]=0 для этого конкретного дублирующего символа, и вы удалите его.

Ответ 12

Вы можете повторно использовать существующий символ. например \0 Если вы поместите это в 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);

Ответ 13

Используйте оператор \b (оператор escape-пространства в обратном пространстве) во втором параметре

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

Ответ 14

Эй, я всегда делаю методы для пользовательских вещей, которые обычно не реализуются в 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();
    }

Для пояснения: да, для замены нет нулевого символа, но вы можете удалить такой символ, как этот. Я знаю, это старый вопрос, но я публикую этот ответ, потому что этот код может быть полезен для некоторых людей.

Ответ 15

Неправильно:

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

Correct:

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

Ответ 16

Вы можете сделать что-то вроде этого:

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