Литерал null char по-прежнему является символом и занимает место в хранилище.
Джимми Т.
7
В вопросе предлагается способ представления «без символов». Хотя нулевой символ полезен во многих ситуациях, он по-прежнему является самостоятельным символом, поэтому не может быть ответом на этот вопрос. Правильный ответ, который уже дал user3001, - использовать упакованный в Java ссылочный тип Character и присвоить ему значение «null», когда «никакой символ» не требуется.
Крис Хаттон,
2
@AVD Да, и rahulsri спрашивает, как изобразить отсутствующий символ. Так что ссылка на нулевой символ подходит.
Крис Хаттон
97
charозначает ровно один символ. Этому типу нельзя присвоить нулевые символы.
Это означает, что не существует значения char, для которого String.replace(char, char)возвращалась бы строка разной длины.
Это правильное решение и должен быть принятым ответом.
Крис Хаттон
2
Хотя это не отвечает на OP, это то, что я искал.
Elyess Abouda
2
САМЫЙ правильный ответ - «это невозможно». Это самое близкое из возможных.
Malnormalulo
2
Характер есть, а вот char - нет.
Питер Де Би
12
Пустая строка - это оболочка char[]без элементов. Вы можете иметь пустой char[]. Но у вас не может быть «пустого» char. Как и другие примитивы, a charдолжно иметь значение.
Вы говорите, что хотите «заменить символ, не оставляя пробела».
Если вы имеете дело с a char[], вы должны создать новый char[]с удаленным элементом.
Если вы имеете дело с a String, вы должны создать новый String(String is immutable) с удаленным символом.
Вот несколько примеров того, как можно удалить символ:
publicstaticvoid main(String[] args)throwsException{String s ="abcdefg";int index = s.indexOf('d');// delete a char from a char[]char[] array = s.toCharArray();char[] tmp =newchar[array.length-1];System.arraycopy(array,0, tmp,0, index);System.arraycopy(array, index+1, tmp, index, tmp.length-index);System.err.println(newString(tmp));// delete a char from a String using replaceString s1 = s.replace("d","");System.err.println(s1);// delete a char from a String using StringBuilderStringBuilder sb =newStringBuilder(s);
sb.deleteCharAt(index);
s1 = sb.toString();System.err.println(s1);}
0 как кодовая единица UTF-16 ( char) является полной кодировкой UTF-16 для кодовой точки Unicode U + 0000. Любое сходство с каким-либо другим набором символов или кодировкой символов не имеет значения. UTF-16 - это то, что использует Java.
Tom
6
Если вы хотите заменить символ в строке, не оставляя пустого места, вы можете добиться этого с помощью StringBuilder. String - это неизменяемый объект в java, вы не можете его изменять.
String str ="Hello";StringBuilder sb =newStringBuilder(str);
sb.deleteCharAt(1);// to replace e character
Я искал это. Просто установите, char c = 0;и он отлично работает. Попытайся.
Например, если вы пытаетесь удалить повторяющиеся символы из String, одним из способов было бы преобразовать строку в массив char и сохранить в хэш-наборе символов, который автоматически предотвратит дублирование.
Другой способ, однако, будет заключаться в преобразовании строки в массив символов, использовании двух циклов for и сравнении каждого символа с остальной частью массива строк / символов (большой O на активности N ^ 2), а затем для каждого найденного дубликата просто установите этот символ на 0 ..
... и используйте new String(char[])для преобразования результирующего массива char в строку, а затем sysout для печати (это все java btw). вы увидите, что все символы, установленные на ноль, просто отсутствуют, и все дубликаты исчезли. длинный пост, но просто хочу привести вам пример.
так что да, установите char c = 0;или, если для массива char, установите cArray[i]=0для этого конкретного повторяющегося символа, и вы удалите его.
В java нет ничего лучше пустого символьного литерала , другими словами, "" не имеет значения, в отличие от "", что означает пустой строковый литерал.
Ближе всего к представлению пустого символьного литерала можно подойти через char [] нулевой длины, что-то вроде:
char[] cArr ={};// cArr is a zero length arraychar[] cArr =newchar[0]// this does the same
Если вы ссылаетесь на класс String, его конструктор по умолчанию создает пустую последовательность символов, используя new char[0]
Кроме того, использование Character.MIN_VALUE неверно, потому что это не действительно пустой символ, а наименьшее значение типа character.
Мне также не нравится Character c = null;как решение, в основном потому, что jvm выдаст NPE, если попытается распаковать его. Во-вторых, null - это в основном ссылка ни на что по ссылочному типу, и здесь мы имеем дело с примитивным типом, который не принимает null как возможное значение.
Предполагая, что в строке, скажем, str, OP хочет заменить все вхождения символа, скажем 'x', пустым символом '', затем попробуйте использовать:
Что ты имеешь в виду it not worked? Вы имеете в виду, что он не компилируется? В таком случае это было бы char ch = '\0';илиchar ch = 0;
Питер Лоури
@rahulsri Все персонажи являются персонажами, и нет персонажа, который не был бы персонажем. Вам нужно понять, в чем состоит ваша реальная потребность, и попытаться решить ее другим способом. Этот nulсимвол является одним из многих специальных символов, который указывает на то, что это символ, которого на самом деле нет, но он сам по себе остается символом.
Питер Лоури
2
«Если бог может что-то сделать, может ли Бог создать скалу, даже если он не может поднять?» Это похоже на вопрос; Можете ли вы создать персонажа, который не является персонажем?
Питер Лоури
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
xD ... забавные вещи получатся, если вы попытаетесь использовать таким образом искаженную (да, искалеченную, растерзанную, изуродованную) строку как часть, например, имени файла.
Scre
0
Привет, я всегда делаю методы для нестандартных вещей, которые обычно не реализованы в java. Вот простой метод, который я сделал для удаления символа из String Fast
Для пояснения: да, нулевого символа для замены нет, но вы можете удалить такой символ. Я знаю, что это старый вопрос, но я отправляю этот ответ, потому что этот код может быть полезен для некоторых людей.
String.replace(' ', EMPTY_CHARACTER)
тот же эффект, что иString.replace(" ", "")
. Т.е. удалите все пробелы.Ответы:
Вы можете назначить
'\u0000'
(или 0). Для этого используйтеCharacter.MIN_VALUE
.источник
'\0'
именно значит? @AVDchar
означает ровно один символ. Этому типу нельзя присвоить нулевые символы.Это означает, что не существует значения char, для которого
String.replace(char, char)
возвращалась бы строка разной длины.источник
Поскольку Character - это класс, производный от Object, вы можете присвоить null как "instance":
Задача решена ;)
источник
Пустая строка - это оболочка
char[]
без элементов. Вы можете иметь пустойchar[]
. Но у вас не может быть «пустого»char
. Как и другие примитивы, achar
должно иметь значение.Вы говорите, что хотите «заменить символ, не оставляя пробела».
Если вы имеете дело с a
char[]
, вы должны создать новыйchar[]
с удаленным элементом.Если вы имеете дело с a
String
, вы должны создать новыйString
(String is immutable) с удаленным символом.Вот несколько примеров того, как можно удалить символ:
источник
Поскольку
chars
это можно представить как целые числа (ASCII-коды), вы можете просто написать:0 в ASCII-коде - это
null
.источник
char
) является полной кодировкой UTF-16 для кодовой точки Unicode U + 0000. Любое сходство с каким-либо другим набором символов или кодировкой символов не имеет значения. UTF-16 - это то, что использует Java.Если вы хотите заменить символ в строке, не оставляя пустого места, вы можете добиться этого с помощью StringBuilder. String - это неизменяемый объект в java, вы не можете его изменять.
источник
Вы не можете. "" - это литерал для строки, не содержащей символов. Он не содержит «пустого символа» (что бы вы под этим ни подразумевали).
источник
Я искал это. Просто установите,
char c = 0;
и он отлично работает. Попытайся.Например, если вы пытаетесь удалить повторяющиеся символы из String, одним из способов было бы преобразовать строку в массив char и сохранить в хэш-наборе символов, который автоматически предотвратит дублирование.
Другой способ, однако, будет заключаться в преобразовании строки в массив символов, использовании двух циклов for и сравнении каждого символа с остальной частью массива строк / символов (большой O на активности N ^ 2), а затем для каждого найденного дубликата просто установите этот символ на 0 ..
... и используйте
new String(char[])
для преобразования результирующего массива char в строку, а затем sysout для печати (это все java btw). вы увидите, что все символы, установленные на ноль, просто отсутствуют, и все дубликаты исчезли. длинный пост, но просто хочу привести вам пример.так что да, установите
char c = 0;
или, если для массива char, установитеcArray[i]=0
для этого конкретного повторяющегося символа, и вы удалите его.источник
В java нет ничего лучше пустого символьного литерала , другими словами, "" не имеет значения, в отличие от "", что означает пустой строковый литерал.
Ближе всего к представлению пустого символьного литерала можно подойти через char [] нулевой длины, что-то вроде:
Если вы ссылаетесь на класс String, его конструктор по умолчанию создает пустую последовательность символов, используя
new char[0]
Кроме того, использование Character.MIN_VALUE неверно, потому что это не действительно пустой символ, а наименьшее значение типа character.
Мне также не нравится
Character c = null;
как решение, в основном потому, что jvm выдаст NPE, если попытается распаковать его. Во-вторых, null - это в основном ссылка ни на что по ссылочному типу, и здесь мы имеем дело с примитивным типом, который не принимает null как возможное значение.Предполагая, что в строке, скажем, str, OP хочет заменить все вхождения символа, скажем 'x', пустым символом '', затем попробуйте использовать:
источник
вот как я это делаю.
источник
Приведенный выше код инициализирует переменную
ch
минимальным значением, которое может иметь char (т\u0000
. Е. ).источник
Вы можете сделать что-то вроде этого:
источник
Вы можете повторно использовать только существующего персонажа. например,
\0
если вы поместите это в строку, у вас будет строка с одним символом в ней.Скажите, что вы хотите
char
такого, что когда вы это сделаетевместо этого вам нужно сделать
источник
it not worked
? Вы имеете в виду, что он не компилируется? В таком случае это было быchar ch = '\0';
илиchar ch = 0;
nul
символ является одним из многих специальных символов, который указывает на то, что это символ, которого на самом деле нет, но он сам по себе остается символом.Используйте
\b
оператор (оператор возврата назад) во втором параметреисточник
Привет, я всегда делаю методы для нестандартных вещей, которые обычно не реализованы в java. Вот простой метод, который я сделал для удаления символа из String Fast
Для пояснения: да, нулевого символа для замены нет, но вы можете удалить такой символ. Я знаю, что это старый вопрос, но я отправляю этот ответ, потому что этот код может быть полезен для некоторых людей.
источник