Разделение строки на первый символ делает первый элемент нулевым. Как обойти это?

1

Итак, скажем, у меня есть эта строка:

+-5

Я разбиваю знак + на массив. Мой первый элемент равен null, а мой второй элемент - -5. Как я могу обойти это и сделать первый элемент только -5?

Изменение: Вот некоторые из моего кода:

Scanner sc = new Scanner(System.in);

System.out.print("Enter polynomial function: ");

String function = sc.nextLine();
function = function.replaceAll("-", "+-").replaceAll(" ", "");

String[] terms = function.split("\\+");

Я пытаюсь получить коэффициенты полинома, сначала заменив все - на +

-5x^2 + 3x -2
+-5x^2 +3x +-2
Now it should split wherever there is a + sign.
First element is null, second element is -5x^2, third element 3x and fourth is -2
  • 1
    Вы только описываете, что делаете. Покажите нам код, который делает это.
  • 2
    Ваш первый элемент не нулевой, это пустая строка. Из [javadoc] ( docs.oracle.com/javase/6/docs/api/java/lang/… вы получите пустую строку в начале.
Теги:
split

3 ответа

0
Лучший ответ

Один относительно простой способ решить проблему - создать свою собственную функцию, которая проверяет первый символ строки вручную:

public static String[] splitPlus(String input) {
    String toSplit = (!input.isEmpty() && input.charAt(0) == '+') ? input.substring(1) : input;
    return toSplit.split("\\+");
}
  • 1
    Большое спасибо. Это работает, все, что мне пришлось изменить, было + на \\ +.
0

Возможно, вы захотите попробовать библиотеку commons lang StringUtils:

String[] terms = StringUtils.split(function, '+');
for (String term : terms) {
    System.out.println(term);
}

Вывод:

-5x^2
3x
-2

Он также разделяет пробелы.

  • 0
    Спасибо, это тоже работает!
0

split() выполняет разбиение по специальному пути. Он создает массив подстрок шаблонов, заканчивающихся символом, указанным в скобках split, поэтому в вашем случае нет ничего перед " + ", поэтому он возвращает пустое string при нулевом индексе возвращаемого массива. Чтобы выполнить требуемую операцию,

  • Либо вы можете проверить чек на пустую строку там
  • Или начните с первого индекса возвращаемого массива

См. Этот Java String.split(), иногда давая пустые строки тоже

Ещё вопросы

Сообщество Overcoder
Наверх
Меню