我正在寻找用户必须以下列格式显示的字符串输入:
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()从这个字符串中获取双元素数组的简单方法的任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
假设input
是Scanner
,Scanner#next()
此处使用
String formatChecker = input.next();
默认情况下,在空格上进行标记(它实际上是在分隔符模式上)。换句话说,如果你输入
1 * 1
然后按回车键,它只会返回
1
因此,String#split(String)
没有被破坏,这是您的输入阅读策略。也许可以考虑使用Scanner#nextLine()
来读取所有内容,直到换行符。