在第一个字符上拆分字符串会使第一个元素为null。怎么解决这个问题?

时间:2014-09-29 10:20:50

标签: java split

所以,让我说我有这个字符串:

+-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

3 个答案:

答案 0 :(得分:0)

split()方法以特殊方式执行拆分。它创建了模式的子串数组,最后用split的括号中指定的字符完成,所以在你的情况下,&#前面没有任何内容39; +'因此它返回返回数组的零索引处的空字符串。要执行所需的操作,

  • 您可以检查空字符串
  • 或者从返回的数组的第一个索引开始

另见Java String.split() sometimes giving blank strings

答案 1 :(得分:0)

您可以尝试使用commons langStringUtils

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

输出:

-5x^2
3x
-2

它也剥离了空格。

答案 2 :(得分:0)

解决问题的一种相对简单的方法是创建自己的函数,手动检查字符串的第一个字符:

public static String[] splitPlus(String input) {
    String toSplit = (!input.isEmpty() && input.charAt(0) == '+') ? input.substring(1) : input;
    return toSplit.split("\\+");
}