如何计算给定参数中的空格?
How to count white spaces in a given argument?
我觉得很奇怪,为什么当表达式为“12 + 1”时,spaceCount 不相加。我得到 spaceCount 的输出 0,即使它应该是 2。任何见解将不胜感激!
public int countSpaces(String expr) {
String tok = expr;
int spaceCount = 0;
String delimiters = "+-*/#! ";
StringTokenizer st = new StringTokenizer(expr, delimiters, true);
while (st.hasMoreTokens()) {
if ((tok = st.nextToken()).equals(" ")) {
spaceCount++;
}
}
return spaceCount; // the expression is: 12 + 1, so this should return 2, but it returns 0;
}
对于这个问题,分词器有点矫枉过正(并不能真正帮助您)。只需遍历所有字符并计算空格:
public int countSpaces( String expr )
{
int count = 0;
for( int i = 0; i < expr.length(); ++i )
{
if( expr.charAt(i) == ' ' )
++count;
}
return count;
}
你的代码似乎没问题,但如果你想计算空格,你可以使用这个:
int count = str.length() - str.replace(" ", "").length();
另一种单行解决方案如下,它也对字符串执行 NULL 检查。
int spacesCount = str == null ? 0 : str.length() - str.replace(" ", "").length();
也可以使用:
String[] strArr = st.split(" ");
if (strArr.length > 1){
int countSpaces = strArr.length - 1;
}
这将查找空格,包括特殊空格。
您可以保留模式,这样您就不需要每次都编译它。如果只需要搜索“”,则应该使用循环来代替。
Matcher spaces = Pattern.compile("\s").matcher(argumentString);
int count = 0;
while (spaces.find()) {
count++;
}
我觉得很奇怪,为什么当表达式为“12 + 1”时,spaceCount 不相加。我得到 spaceCount 的输出 0,即使它应该是 2。任何见解将不胜感激!
public int countSpaces(String expr) {
String tok = expr;
int spaceCount = 0;
String delimiters = "+-*/#! ";
StringTokenizer st = new StringTokenizer(expr, delimiters, true);
while (st.hasMoreTokens()) {
if ((tok = st.nextToken()).equals(" ")) {
spaceCount++;
}
}
return spaceCount; // the expression is: 12 + 1, so this should return 2, but it returns 0;
}
对于这个问题,分词器有点矫枉过正(并不能真正帮助您)。只需遍历所有字符并计算空格:
public int countSpaces( String expr )
{
int count = 0;
for( int i = 0; i < expr.length(); ++i )
{
if( expr.charAt(i) == ' ' )
++count;
}
return count;
}
你的代码似乎没问题,但如果你想计算空格,你可以使用这个:
int count = str.length() - str.replace(" ", "").length();
另一种单行解决方案如下,它也对字符串执行 NULL 检查。
int spacesCount = str == null ? 0 : str.length() - str.replace(" ", "").length();
也可以使用:
String[] strArr = st.split(" ");
if (strArr.length > 1){
int countSpaces = strArr.length - 1;
}
这将查找空格,包括特殊空格。 您可以保留模式,这样您就不需要每次都编译它。如果只需要搜索“”,则应该使用循环来代替。
Matcher spaces = Pattern.compile("\s").matcher(argumentString);
int count = 0;
while (spaces.find()) {
count++;
}