我需要计算字符串中的空格数,但是当我运行它时,我的代码给了我一个错误的数字,出了什么问题?
int count=0;
String arr[]=s.split("\t");
OOPHelper.println("Number of spaces are: "+arr.length);
count++;
答案 0 :(得分:28)
s.length() - s.replaceAll(" ", "").length()
会返回空格数。
还有更多方法。例如“
int spaceCount = 0;
for (char c : str.toCharArray()) {
if (c == ' ') {
spaceCount++;
}
}
等等。
在您的情况下,您尝试使用\t
- TAB拆分字符串。如果您使用" "
,则会获得正确的结果。使用\s
可能会造成混淆,因为它匹配所有 whitepsaces - 常规空格和TAB。
答案 1 :(得分:15)
这是另一种看待它的方式,它是一个简单的单行:
int spaces = s.replaceAll("[^ ]", "").length();
这可以通过有效地删除所有非空格然后获取剩余的空间(空格)来实现。
您可能想要添加空检查:
int spaces = s == null ? 0 : s.replaceAll("[^ ]", "").length();
您也可以使用流:
int spaces = s.chars().filter(c -> c == (int)' ').count();
答案 2 :(得分:3)
\t
将匹配制表符,而不是空格,并且还应使用双斜杠来引用:\\t
。您可以调用s.split( " " )
,但不会计算连续的空格。我的意思是......
String bar = " ba jfjf jjj j ";
String[] split = bar.split( " " );
System.out.println( split.length ); // Returns 5
所以,尽管有七个空格字符,但只有五个空间块。我想,这取决于你想要计算的数量。
Commons Lang是你的朋友。
int count = StringUtils.countMatches( inputString, " " );
答案 3 :(得分:3)
最快的方法是:
int count = 0;
for(int i = 0; i < str.length(); i++) {
if(Character.isWhitespace(str.charAt(i))) count++;
}
这将捕获所有被视为空格的字符。
正则表达式解决方案需要编译正则表达式并使用它 - 需要大量的开销。获取字符数组需要分配。迭代字节数组会更快,但前提是你确定你的字符是ASCII。
答案 4 :(得分:3)
如果您使用Java 8,则以下内容应该有效:
long count = "0 1 2 3 4.".chars().filter(Character::isWhitespace).count();
这也可以在Java 8中使用Eclipse Collections:
int count = Strings.asChars("0 1 2 3 4.").count(Character::isWhitespace);
注意:我是Eclipse Collections的提交者。
答案 5 :(得分:2)
您的代码将计算制表符的数量,而不是空格的数量。此外,标签数量将比arr.length
少一个。
答案 6 :(得分:2)
使用正则表达式的另一种方式
int length = text.replaceAll("[^ ]", "").length();
答案 7 :(得分:1)
您提供的代码会打印选项卡的数量,而不是空格的数量。以下函数应计算给定字符串中的空白字符数。
int countSpaces(String string) {
int spaces = 0;
for(int i = 0; i < string.length(); i++) {
spaces += (Character.isWhitespace(string.charAt(i))) ? 1 : 0;
}
return spaces;
}
答案 8 :(得分:1)
计算空格的简单快捷方法
String fav="foo hello me hi";
for( int i=0; i<fav.length(); i++ ) {
if(fav.charAt(i) == ' ' ) {
counter++;
}
}
答案 9 :(得分:1)
请检查以下代码,它可以帮助
public class CountSpace {
public static void main(String[] args) {
String word = "S N PRASAD RAO";
String data[];int k=0;
data=word.split("");
for(int i=0;i<data.length;i++){
if(data[i].equals(" ")){
k++;
}
}
System.out.println(k);
}
}
答案 10 :(得分:1)
使用java.util.regex.Pattern / java.util.regex.Matcher的解决方案
String test = "foo bar baz ";
Pattern pattern = Pattern.compile(" ");
Matcher matcher = pattern.matcher(test);
int count = 0;
while (matcher.find()) {
count++;
}
System.out.println(count);
答案 11 :(得分:0)
我只需要做类似的事情,这就是我用过的东西:
String string = stringValue;
String[] stringArray = string.split("\\s+");
int length = stringArray.length;
System.out.println("The number of parts is: " + length);
答案 12 :(得分:0)
public static void main(String[] args) {
String str = "Honey dfd tEch Solution";
String[] arr = str.split(" ");
System.out.println(arr.length);
int count = 0;
for (int i = 0; i < arr.length; i++) {
if (!arr[i].trim().isEmpty()) {
System.out.println(arr[i]);
count++;
}
}
System.out.println(count);
}
答案 13 :(得分:0)
public static void main(String[] args) {
Scanner input= new Scanner(System.in);`
String data=input.nextLine();
int cnt=0;
System.out.println(data);
for(int i=0;i<data.length()-1;i++)
{if(data.charAt(i)==' ')
{
cnt++;
}
}
System.out.println("Total number of Spaces in a given String are " +cnt);
}
答案 14 :(得分:0)
这个程序肯定会帮助你。
class SpaceCount
{
public static int spaceCount(String s)
{ int a=0;
char ch[]= new char[s.length()];
for(int i = 0; i < s.length(); i++)
{ ch[i]= s.charAt(i);
if( ch[i]==' ' )
a++;
}
return a;
}
public static void main(String... s)
{
int m = spaceCount("Hello I am a Java Developer");
System.out.println("The number of words in the String are : "+m);
}
}
答案 15 :(得分:0)
最精确,最准确,最快的方法是:
String Name="Infinity War is a good movie";
int count =0;
for(int i=0;i<Name.length();i++){
if(Character.isWhitespace(Name.charAt(i))){
count+=1;
}
}
System.out.println(count);
答案 16 :(得分:0)
import java.util.Scanner;
import java.io.*;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in).useDelimiter("\n");
String str = sc.next();
int spaceCount=0;
str = str.toLowerCase();
for(int i = 0; i < str.length(); i++) {
if(str.charAt(i)==' '){
spaceCount++;
}
}
System.out.println("Number of spaces: "+ spaceCount);
}
}