在string方法中计数单词?

我想知道如何编写一个方法来计算一个Javastring中的单词数量只能通过使用string方法,如charAt,长度或子string。

循环和如果陈述是好的!

我真的很感激任何帮助,我可以得到! 谢谢!

public static int countWords(String s){ int wordCount = 0; boolean word = false; int endOfLine = s.length() - 1; for (int i = 0; i < s.length(); i++) { // if the char is a letter, word = true. if (Character.isLetter(s.charAt(i)) && i != endOfLine) { word = true; // if char isn't a letter and there have been letters before, // counter goes up. } else if (!Character.isLetter(s.charAt(i)) && word) { wordCount++; word = false; // last word of String; if it doesn't end with a non letter, it // wouldn't count without this. } else if (Character.isLetter(s.charAt(i)) && i == endOfLine) { wordCount++; } } return wordCount; } 

即使有多个空格,前导和/或尾随空格以及空白行,这也是可行的:

 String trim = s.trim(); if (trim.isEmpty()) return 0; return trim.split("\\s+").length; // separate string around spaces 

希望有所帮助。 更多关于拆分的信息。

嗨,我只是想通过这样的StringTokenizer:

 String words = "word word2 word3 word4"; StringTokenizer st = new Tokenizer(words); st.countTokens(); 

简单地使用,

 str.split("\\w+").length ; 
 public static int countWords(String str){ if(str == null || str.isEmpty()) return 0; int count = 0; for(int e = 0; e < str.length(); e++){ if(str.charAt(e) != ' '){ count++; while(str.charAt(e) != ' ' && e < str.length()-1){ e++; } } } return count; } 
  private static int countWordsInSentence(String input) { int wordCount = 0; if (input.trim().equals("")) { return wordCount; } else { wordCount = 1; } for (int i = 0; i < input.length(); i++) { char ch = input.charAt(i); String str = new String("" + ch); if (i+1 != input.length() && str.equals(" ") && !(""+ input.charAt(i+1)).equals(" ")) { wordCount++; } } return wordCount; } 

Algo in O(N)

  count : 0; if(str[0] == validChar ) : count++; else : for i = 1 ; i < sizeOf(str) ; i++ : if(str[i] == validChar AND str[i-1] != validChar) count++; end if; end for; end if; return count; 
  import com.google.common.base.Optional; import com.google.common.base.Splitter; import com.google.common.collect.HashMultiset; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Multiset; String str="Simple Java Word Count count Count Program"; Iterable<String> words = Splitter.on(" ").trimResults().split(str); //google word counter Multiset<String> wordsMultiset = HashMultiset.create(); for (String string : words) { wordsMultiset.add(string.toLowerCase()); } Set<String> result = wordsMultiset.elementSet(); for (String string : result) { System.out.println(string+" X "+wordsMultiset.count(string)); } add at the pom.xml <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>r09</version> </dependency> 

计数string中的单词:
这可能也有帮助 – >

 package data.structure.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class CountWords { public static void main(String[] args) throws IOException { // Couting number of words in a string BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("enter Your String"); String input = br.readLine(); char[] arr = input.toCharArray(); int i = 0; boolean notCounted = true; int counter = 0; while (i < arr.length) { if (arr[i] != ' ') { if (notCounted) { notCounted = false; counter++; } } else { notCounted = true; } i++; } System.out.println("words in the string are : " + counter); } } 

使用

 myString.split("\\s+"); 

这将工作。

 public class TestStringCount { public static void main(String[] args) { int count=0; boolean word= false; String str = "how ma ny wo rds are th ere in th is sente nce"; char[] ch = str.toCharArray(); for(int i =0;i<ch.length;i++){ if(!(ch[i]==' ')){ for(int j=i;j<ch.length;j++,i++){ if(!(ch[j]==' ')){ word= true; if(j==ch.length-1){ count++; } continue; } else{ if(word){ count++; } word = false; } } } else{ continue; } } System.out.println("there are "+(count)+" words"); } } 

导入java.util。 ; import java.io. ;

公共课Main {

 public static void main(String[] args) { File f=new File("src/MyFrame.java"); String value=null; int i=0; int j=0; int k=0; try { Scanner in =new Scanner(f); while(in.hasNextLine()) { String a=in.nextLine(); k++; char chars[]=a.toCharArray(); i +=chars.length; } in.close(); Scanner in2=new Scanner(f); while(in2.hasNext()) { String b=in2.next(); System.out.println(b); j++; } in2.close(); System.out.println("the number of chars is :"+i); System.out.println("the number of words is :"+j); System.out.println("the number of lines is :"+k); } catch (Exception e) { e.printStackTrace(); } } 

}

有一个简单的解决scheme你可以试试这个代码

  String s = "hju vg jhdgsf dh gg ggg "; String[] words = s.trim().split("\\s+"); System.out.println("count is = "+(words.length)); 
 public static int countWords(String input) { int wordCount = 0; boolean isBlankSet = false; input = input.trim(); for (int j = 0; j < input.length(); j++) { if (input.charAt(j) == ' ') isBlankSet = true; else { if (isBlankSet) { wordCount++; isBlankSet = false; } } } return wordCount + 1; } 

我对这个scheme的想法是:

 package text; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class CoutingWords { public static void main(String[] args) throws IOException { String str; int cWords = 1; char ch; BufferedReader buffor = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Enter text: "); str = buffor.readLine(); for(int i =0; i<str.length(); i++){ ch = str.charAt(i); if(Character.isWhitespace(ch)){ cWords++; } } System.out.println("There are " + (int)cWords +" words."); } } 

我是新来的stackoverflow,但我希望我的代码可以帮助:

 private int numOfWordsInLineCounter(String line){ int words = 0; for(int i = 1 ; i<line.length();i++){ Character ch = line.charAt(i-1); Character bch = line.charAt(i); if(Character.isLetterOrDigit(ch) == true && Character.isLetterOrDigit(bch)== false ) words++; if(i == line.length()-1 && Character.isLetterOrDigit(bch))words++; } return words; } 

一个string短语normaly有空格分隔的单词。 那么你可以使用空格分隔短语作为分隔字符,并按如下所示进行计数。

 import java.util.HashMap; import java.util.Map; public class WordCountMethod { public static void main (String [] args){ Map<String, Integer>m = new HashMap<String, Integer>(); String phrase = "hello my name is John I repeat John"; String [] array = phrase.split(" "); for(int i =0; i < array.length; i++){ String word_i = array[i]; Integer ci = m.get(word_i); if(ci == null){ m.put(word_i, 1); } else m.put(word_i, ci+1); } for(String s : m.keySet()){ System.out.println(s+" repeats "+m.get(s)); } } } 
 if(str.isEmpty() || str.trim().length() == 0){ return 0; } return (str.trim().split("\\s+").length);