问题描述
Java不会像C那样“标记”字符串的结尾。它跟踪长度和值,因此\0
字符串中可以包含零个字符()。如果String
从包含char的char数组创建a\0
,则结果String
将包含这些字符。
还要注意,数组的大小是静态的-无法调整大小,因此您必须自己跟踪“大小”(String构造函数不会从char数组的末尾为您删除不需要的字符)。
考虑使用以下任一方法:
-
阿
StringBuilder
如通过克莱德伯德III,或建议 -
String(char value[], int offset, int count)
; 您必须以编程方式确定适当的值offset
以及count
将要使用的适当值。也许String方法(例如replace
,concat
)substring
可能会有所帮助。
解决方法
我正在解决一个简单的问题:
在Java中删除字符数组中的某些字符,想法很简单:
static void remove_char(char[] arr,char c){
int r = 0;
for (int i = 0 ; i < arr.length ; i++){
if (arr[i] == c){
r++;
continue;
}
arr[i - r] = arr[i];
}
arr[arr.length - r] = '\0'; // ??
return;
}
我想输入一个ending character
信号,表示当我们想要使用例如生成一个字符串时,不必考虑数组的其余部分new String(arr)
Java中是否有这样的字符?(我想是C
,\0
但我不确定)
例如,当我们调用:
System.out.println(new String(remove_char(new char[] {'s','a','l','m'},'a')))
这将被打印: slm m
虽然我想得到,但我不想使用新的数组slm
来做到这一点in-place