- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题是我们必须拆分字符串并写出我们有多少个单词。
Scanner in = new Scanner(System.in);
String st = in.nextLine();
String[] tokens = st.split("[\\W]+");
当我将输入作为新行并打印编号时。 token 数。我得到的答案是 1。但我希望它是 0。我该怎么办?这里的分隔符都是符号。
最佳答案
简短回答:获取str
中的 token (由空格分隔符决定),您可以执行以下操作:
String str = ... //some string
str = str.trim() + " "; //modify the string for the reasons described below
String[] tokens = str.split("\\s+");
更长的答案:
首先,split()
的参数是分隔符 - 在本例中是一个或多个空白字符,即 "\\s+"
.
如果您仔细查看 String#split(String, int)
的 Javadoc (这就是 String#split(String)
的意思),你就会明白为什么它会这样。
If the expression does not match any part of the input then the resulting array has just one element, namely this string.
这就是为什么"".split("\\s+")
将返回一个包含一个空字符串的数组 [""]
,因此您需要附加空格以避免这种情况。 " ".split("\\s+")
根据需要返回一个包含 0 个元素的空数组。
When there is a positive-width match at the beginning of this string then an empty leading substring is included at the beginning of the resulting array.
这就是为什么" a".split("\\s+")
将返回["", "a"]
,所以你需要trim()
首先删除字符串开头的空格。
If n is zero then the pattern will be applied as many times as possible, the array can have any length, and trailing empty strings will be discarded.
自 String#split(String)
来电 String#split(String, int)
与 limit
参数为零,您可以在字符串末尾添加空格而不更改单词数(因为尾随空字符串将被丢弃)。
更新:
如果分隔符是 "\\W+"
,略有不同,因为您不能使用 trim()
为此:
String str = ...
str = str.replaceAll("^\\W+", "") + " ";
String[] tokens = str.split("\\W+");
关于java - 输入换行时如何使用分割功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33078147/
在 Vaadin 7.0,显示时JavaBean Table 中的数据与 BeanContainer ,用新数据刷新表的正确方法是什么? 最佳答案 该表通过监听器监视表项的属性。如果您通过表的 Ite
首先,我使用的是带有 Axis2 1.6.2 的 eclipse,我正在 tomcat 6 上部署我创建的 Web 服务。Web 服务是在 eclipse 中通过自上而下的方法创建的。 我被要求使对我
我已将 Rails 3.1.1 应用程序升级到 Rails 3.1.3,现在,对于每个请求,它仅响应错误数量的参数(3 for 1)。不幸的是,它没有说明错误在哪里,并且应用程序跟踪为空。我认为存在一
我是一名优秀的程序员,十分优秀!