我想在java中将empty character
表示为""
...
就像char ch = a empty character;
实际上我想在不留空间的情况下替换角色。
我认为理解这意味着什么就足够了:no character not even space
。
答案 0 :(得分:115)
您可以指定'\u0000'
(或0)。
为此,请使用Character.MIN_VALUE
。
Character ch = Character.MIN_VALUE;
答案 1 :(得分:66)
char
表示一个字符。您不能为此类型指定零个字符。
这意味着没有char值,String.replace(char, char)
将返回一个长度不同的字符串。
答案 2 :(得分:27)
由于Character是一个派生自Object的类,您可以将null指定为“instance”:
Character myChar = null;
问题解决了;)
答案 3 :(得分:11)
空字符串是char[]
上没有元素的包装器。你可以有一个空的char[]
。但你不能有一个“空”char
。与其他原语一样,char
必须具有值。
你说你想“在不留空间的情况下替换角色”。
如果您正在处理char[]
,那么您将创建一个新的char[]
,并删除该元素。
如果您正在处理String
,那么您将创建一个新的String
(字符串是不可变的),并删除该字符。
以下是一些如何移除字符的示例:
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);
}
答案 4 :(得分:6)
如果要在不留空任何空格的情况下替换字符串中的字符,则可以使用StringBuilder实现此目的。 String是java中的不可变对象,不能修改它。
String str = "Hello";
StringBuilder sb = new StringBuilder(str);
sb.deleteCharAt(1); // to replace e character
答案 5 :(得分:4)
由于chars
可以表示为整数(ASCII-Codes),您可以简单地写:
char c = 0;
ASCII码中的0是null
。
答案 6 :(得分:2)
你做不到。 “”是字符串的文字,其中包含 no 字符。它不包含“空字符”(无论你的意思是什么)。
答案 7 :(得分:2)
在java中,空字符文字没有任何内容,换句话说,''与#34;"没有任何意义。这意味着空字符串文字
最接近表示空字符文字的方法是通过零长度char [],类似于:
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想要替换所有出现的字符,比如用空字符'',然后尝试使用:
str.replace("x", "");
答案 8 :(得分:1)
我就是这样做的。
char[] myEmptyCharArray = "".toCharArray();
答案 9 :(得分:1)
我正在寻找这个。只需设置char c = 0;
,它就可以完美运行。试试吧。
例如,如果您尝试从String中删除重复的字符,则一种方法是将字符串转换为char数组,并存储在字符的哈希集中,这将自动防止重复。
但是,另一种方法是将字符串转换为char数组,使用两个for循环,然后将每个字符与其余的string / char数组进行比较(N ^ 2活动中的Big O),然后找到的每个重复项都将char设置为0。
...并使用new String(char[])
将所得的char数组转换为字符串,然后使用sysout进行打印(这全部是java btw)。您将观察到所有设置为零的字符根本就不存在,并且所有重复项都消失了。长篇文章,但只想举一个例子。
因此可以设置char c = 0;
,或者对于字符数组,请为该特定重复字符设置cArray[i]=0
,您将删除它。
答案 10 :(得分:1)
<filter>
<filter-name>StaticContentFilter</filter-name>
<filter-class>com.aaa.bbb.filters.StaticContentFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>StaticContentFilter</filter-name>
<url-pattern>/web/*</url-pattern>
</filter-mapping>
上面的代码会使用char可以拥有的最小值(即char ch = Character.MIN_VALUE;
)初始化变量ch
。
答案 11 :(得分:0)
您只能重复使用现有角色。例如\0
如果你把它放在一个字符串中,你将拥有一个字符串,其中包含一个字符。
假设您需要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);
答案 12 :(得分:0)
嘿,我总是为自定义的东西制作方法,这些方法通常没有在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();
}
为了解释,是的,没有替换的空字符,但你可以删除这样的字符。 我知道这是一个老问题,但我发布了这个答案,因为这段代码可能对某些人有用。
答案 13 :(得分:0)
错误:
String.replace('T', '') ;
正确:
String.replace("T", "");
答案 14 :(得分:0)
您可以执行以下操作:
mystring.replace(""+ch, "");
答案 15 :(得分: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
答案 16 :(得分:0)
之前的字符串= EMPTY_SPACE + TAB +“单词” + TAB + EMPTY_SPACE
哪里 EMPTY_SPACE =“”(这是字符串) TAB ='\ t'(这是字符)
= after之后的字符串。replaceAll(“”,“”).replace('\ t','\ 0') 手段 after =“ word”