我正在编写一个程序,该程序应该用语言忽略(
和)
(不使用RegExp),并且通过我创建的方法,我希望变量x
能够记住新的字符串。如何以这种方式访问subSequence或通过另一种不使用RegExp的方法来规避我的问题?
public int removeParentheses(char[] str) {
// To keep track of '(' and ')' characters count
int count = 0;
for (int i = 0; i < str.length; i++)
if (str[i] != '(' && str[i] != ')')
str[count++] = str[i];
return count;
}
public String foo(String input) {
for (String index : input.split(" ")) {
char[] charArray = index.toCharArray();
int k = removeParentheses(charArray);
String x = String.valueOf(charArray).subSequence(0, k); // that's what i want to do. it doesn't work.
System.out.println(String.valueOf(charArray).subSequence(0, k)); // this is the only way i can make it work, but it doesn't suffice my needs
}
}
当前输出为
error: incompatible types: CharSequence cannot be converted to String
String x = String.valueOf(charArray).subSequence(0, k);
^
1 error
我希望boo)
的输出将是boo
变量中的x
,而不仅仅是通过System.out.println
方法在屏幕上显示。
答案 0 :(得分:0)
您说这是“我想做的事。它不起作用。” :
String x = String.valueOf(charArray).subSequence(0, k);
subSequence()
的返回值是一个CharSequence
,它不是字符串。这是行不通的。
由于您是从字符数组– char []
开始的,因此可以使用Arrays.copyOfRange()
创建一个由charArray
的较小子集组成的新数组,如下所示:
char[] copy = Arrays.copyOfRange(charArray, 0, k);
从那里,您可以构造一个新的String
– new String(copy)
–或直接使用该新字符数组。