如何在Java字符类中表示空字符
我想在Java中将空字符表示为字符串中的如何在Java字符类中表示空字符,java,Java,我想在Java中将空字符表示为字符串中的“” 就像charch=一个空字符 实际上我想在不留空格的情况下替换一个字符 我认为理解这意味着什么就足够了:没有字符,甚至没有空格 只能重复使用现有角色。e、 g.\0如果将其放入字符串中,则将有一个包含一个字符的字符串 假设你想要一个字符,这样当你想要的时候 String s = char ch = ? String s2 = s + ch; // there is not char which does this. assert s.equals
“
”
就像charch=一个空字符代码>
实际上我想在不留空格的情况下替换一个字符
我认为理解这意味着什么就足够了:没有字符,甚至没有空格 只能重复使用现有角色。e、 g.\0
如果将其放入字符串中,则将有一个包含一个字符的字符串
假设你想要一个字符
,这样当你想要的时候
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);
您可以分配'\u0000'
(或0)。
为此,请使用
你不能。“”是字符串的文本,不包含任何字符。它不包含“空字符”(无论您是什么意思)。由于字符是从对象派生的类,您可以将null指定为“实例”:
问题已解决;) 空字符串是char[]
上没有元素的包装器。您可以有一个空的char[]
。但是您不能有一个“空的”char
。与其他原语一样,char
必须有一个值
你说你想“在不留空格的情况下替换一个字符”
如果您正在处理一个char[]
,那么您将在删除该元素的情况下创建一个新的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);
}
如果希望在不留下任何空白的情况下替换字符串中的字符,则可以使用StringBuilder实现这一点。字符串在java中是不可变的对象,您不能修改它
String str = "Hello";
StringBuilder sb = new StringBuilder(str);
sb.deleteCharAt(1); // to replace e character
char
仅表示一个字符。不能为此类型分配零个字符
这意味着没有char值,String.replace(char,char)
将返回长度不同的字符串。在第二个参数中使用\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
String test=“Anna Banana”;
系统输出打印LN(测试)//返回安娜香蕉
System.out.println(test.replaceAll(“,”\b”)//返回删除字符串中所有空格的结果
我就是这样做的
char[] myEmptyCharArray = "".toCharArray();
上面的代码将使用字符可以具有的最小值(即\u0000
)初始化变量ch
。在java中,没有任何内容是空字符文字,换句话说,“”与“”不同,后者指空字符串文字
最接近表示空字符文字的是零长度字符[],类似于:
char[] cArr = {}; // cArr is a zero length array
char[] cArr = new char[0] // this does the same
如果您引用字符串类,它的默认构造函数将使用newchar[0]
此外,使用Character.MIN_值是不正确的,因为它不是真正的空字符,而是字符类型的最小值
我也不喜欢字符c=null
作为一种解决方案,主要是因为如果jvm试图取消装箱,它将抛出NPE。其次,null基本上是对nothing w.r.t引用类型的引用,这里我们处理的是不接受null作为可能值的基元类型
假设在字符串(例如str)中,OP希望将所有出现的字符(例如“x”)替换为空字符“”,然后尝试使用:
str.replace("x", "");
由于chars
可以表示为整数(ASCII码),您只需编写:
char c = 0;
ASCII代码中的0是空的,我总是为定制的东西创建方法,这些东西通常不是用java实现的。下面是我为快速从字符串中删除字符而做的一个简单方法
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();
}
publicstaticstringremovechar(stringstr,charc){
StringBuilder strNew=新的StringBuilder(str.length());
字符读取;
对于(int i=0;i您可以这样做:
mystring.replace(""+ch, "");
我一直在寻找这个。只需设置char c=0;
,它就能完美工作。试试看
例如,如果试图从字符串中删除重复的字符,一种方法是将字符串转换为字符数组并存储在一组字符中,这将自动防止重复
但是,另一种方法是将字符串转换为字符数组,使用两个for循环,并将每个字符与字符串/字符数组的其余部分进行比较(N^2活动中的一个大O),然后对于找到的每个重复字符,只需将该字符设置为0
…并使用newstring(char[])
将结果字符数组转换为String,然后使用sysout打印(这都是java btw)。您将观察到设置为零的所有字符都不存在,所有重复的字符都消失了。文章很长,但只想给您一个示例
因此,如果设置字符c=0;
,或者对于字符数组,为特定的重复字符设置cArray[i]=0
,您将删除它。String before=EMPTY\u SPACE+TAB+“word”+TAB+EMPTY\u SPACE
在哪里
空_SPACE=“”(这是字符串)
TAB='\t'(这是字符)
字符串after=before.replaceAll(“,”).replace('\t','\0')
方法
在=“word”之后什么意思它不起作用?你是说它不可编译吗?在这种情况下,它将是字符ch='\0';
或字符ch=0;
@rahulsri所有字符都是字符,没有一个字符不是字符。你需要弄清楚你真正的需求是什么,并尝试以不同的方式解决它nul
character是许多特殊字符中的一个,表明它不是真正存在的字符,但它本身仍然是一个字符。“如果上帝能做任何事情,上帝能创造一块即使他不能举起的石头吗?”这与问题类似;您能创建一个非字符的字符吗?显示一个您要执行的替换操作的示例。@rahulsri我看不到您要引用的代码
char c = 0;
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();
}
mystring.replace(""+ch, "");