如何正确拆分这个字符串?

时间:2014-12-06 17:07:21

标签: java string split

我正在寻找用户必须以下列格式显示的字符串输入:

integer*integer

如果我使用.split("\\*")方法创建一个使用星号作为分隔符的数组,它可以正常工作,我最终得到一个包含两个元素的数组,这正是我正在寻找的。

但是,如果用户输入类似(注意空格)的内容:

integer *integer 
or
integer * integer
or 
integer* integer

更确切地说,这是看起来不起作用的确切片段:

String formatChecker = input.next();
System.out.println("LENGTH:" + formatChecker.split("\\*").length);

和一个例子

1*1
LENGTH:2

1 * 1
LENGTH:1

.split("\\*)只生成一个包含一个元素的数组,我不明白为什么。只有当分隔符位于空格旁边时才会出现问题,但根据我的理解,它仍应提供一个双元素数组,唯一的区别是字符串中会有空格但可以使用.trim轻松清理()。

使用.split()从这个字符串中获取双元素数组的简单方法的任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

假设inputScannerScanner#next()此处使用

String formatChecker = input.next();
默认情况下,

在空格上进行标记(它实际上是在分隔符模式上)。换句话说,如果你输入

1 * 1

然后按回车键,它只会返回

1

因此,String#split(String)没有被破坏,这是您的输入阅读策略。也许可以考虑使用Scanner#nextLine()来读取所有内容,直到换行符。