Есть ли способ запомнить подпоследовательность в переменную? - PullRequest
0 голосов
/ 21 октября 2019

Я создаю программу, которая должна игнорировать ( и ) в словах (без использования 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) будет boo в моей переменной x, а не только на экране с помощью метода System.out.println.

1 Ответ

0 голосов
/ 21 октября 2019

Вы сказали, что это «что я хочу сделать. Это не работает». :

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) - или, возможно, просто использовать этот новый массив символов напрямую.

...