Ответ 1
Вы можете назначить '\u0000'
(или 0).
Для этого используйте Character.MIN_VALUE
.
Character ch = Character.MIN_VALUE;
Я хочу представить пустой символ в Java как ""
в строке...
Вот так char ch = an empty character;
На самом деле я хочу заменить персонажа, не оставляя пробела.
Я думаю, что этого может быть достаточно, чтобы понять, что это значит: ни одного персонажа, ни даже пространства.
Вы можете назначить '\u0000'
(или 0).
Для этого используйте Character.MIN_VALUE
.
Character ch = Character.MIN_VALUE;
char
означает ровно один символ. Вы не можете назначить нулевые символы этому типу.
Это означает, что нет значения char, для которого String.replace(char, char)
будет возвращать строку с разной длиной.
Поскольку Character является классом, происходящим из Object, вы можете назначить null как "экземпляр":
Character myChar = null;
Проблема решена;)
Пустая строка является оберткой на 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);
}
Если вы хотите заменить символ в String, не выходя из какого-либо пустого пространства, вы можете добиться этого, используя StringBuilder. String - неизменяемый объект в java, вы не можете его изменить.
String str = "Hello";
StringBuilder sb = new StringBuilder(str);
sb.deleteCharAt(1); // to replace e character
Поскольку chars
может быть представлен как целые (ASCII-коды), вы можете просто написать:
char c = 0;
0 в ASCII-коде null
.
Вы не можете. "- буква для строки, которая не содержит символов. Он не содержит" пустой символ" (что бы вы ни подразумевали под этим).
В 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", "");
вот как я это делаю.
char[] myEmptyCharArray = "".toCharArray();
char ch = Character.MIN_VALUE;
В приведенном выше коде инициализируется переменная ch
с минимальным значением, которое может иметь a char (т.е. \u0000
).
Я искал это. Просто установите 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
для этого конкретного дублирующего символа, и вы удалите его.
Вы можете повторно использовать существующий символ. например \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);
Используйте оператор \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
Эй, я всегда делаю методы для пользовательских вещей, которые обычно не реализуются в 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();
}
Для пояснения: да, для замены нет нулевого символа, но вы можете удалить такой символ, как этот. Я знаю, это старый вопрос, но я публикую этот ответ, потому что этот код может быть полезен для некоторых людей.
Неправильно:
String.replace('T', '') ;
Correct:
String.replace("T", "");
Вы можете сделать что-то вроде этого:
mystring.replace(""+ch, "");