有没有办法将子序列记忆到变量中?

Is there a way to memorize a subSequence into a variable?

我正在编写一个程序,该程序应该忽略文字中的 ()(不使用 RegExp),并且通过我创建的方法,我想要我的变量 x 来记住新的字符串。如何以这种方式访问​​子序列或通过不包括使用 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) 的输出在我的 x 变量中是 boo,而不仅仅是通过 System.out.println 方法在屏幕上显示。

你说这是"what i want to do. it doesn't work.":

String x = String.valueOf(charArray).subSequence(0, k);

subSequence() is a CharSequence 的 return 值不是字符串。这是有道理的,它不会起作用。

由于您是从一个字符数组开始的 – char [] – 您可以使用 Arrays.copyOfRange() 创建一个包含 charArray 的一些较小子集的新数组,如下所示:

char[] copy = Arrays.copyOfRange(charArray, 0, k);

从那里,您可以构建一个新的 Stringnew String(copy) – 或者直接使用新的字符数组。