如何计算java字符串中的空格?

时间:2012-03-11 14:26:26

标签: java string

我需要计算字符串中的空格数,但是当我运行它时,我的代码给了我一个错误的数字,出了什么问题?

 int count=0;
    String arr[]=s.split("\t");
    OOPHelper.println("Number of spaces are: "+arr.length);
    count++;

17 个答案:

答案 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();

Java 8更新

您也可以使用流:

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);
     }
}