[英]How do I count the number of words in a string?
我需要計算單詞的數量,我假設正確的方法是計算字符串中前一個字符不是字母(即其他字符)的次數,因為這是假設會有字符串中的冒號、空格、制表符和其他符號。 所以一開始我的想法是遍歷每個字符並計算你不會得到一個字母的次數
for(int i = 0; i < string.length(); i++) {
for(int j = 0; i < alphabets.length(); j++) {
if (string.charAt(i-1) == alphabets.charAt(j)) {
counter++;
}
}
}
但是,由於這個原因,我總是會得到一個數組越界。 所以,我有點需要一些幫助或其他實際上可以更有效的方法。 我想過只使用匹配 [a-zA-z] 但我不確定如何處理一個字符以與字符串相媲美來計算它出現的次數。
謝謝
您可以使用String.split()將字符串轉換為一個數組,每個元素中包含一個單詞。 字數由數組的長度給出:
int words = myString.split("\s+").length;
這個問題比你的算法允許的稍微復雜一些。
這看起來像作業,所以我不想提供任何代碼。 我建議采用一種更容易思考的替代方法。
您建議使用像“[A-Za-z]”這樣的正則表達式會很好。 在 split 命令中,您將按相反方向拆分,例如:
String[] words = "示例測試:一、二、三".split("[^A-Za-z]+");
編輯:如果你只是在尋找原始速度,這會更快地完成工作。
public static int countWords(String str) {
char[] sentence = str.toCharArray();
boolean inWord = false;
int wordCt = 0;
for (char c : sentence) {
if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z') {
if (!inWord) {
wordCt++;
inWord = true;
}
} else {
inWord = false;
}
}
return wordCt;
}
您收到IndexOutOfBoundsException
的原因可能是因為當 i 為 0 時,您的內部循環將具有string.charAt(i-1)
它將拋出異常,因為 0-1 為 -1。 如果您修復了您的方法可能會起作用,盡管您可以使用更有效的技術。
直接將代碼地址,你的第一個循環的I = 0作為我的第一個值,但隨后你問
string.charAt(i-1) = string.charAt(-1),
這就是數組越界的來源。
第二個循環還有一個問題:
for(int j = 0; i <alphabets.length(); j++) {
您可能還想將撇號也視為單詞的一部分。
像這樣使用
String s = "I am Juyel Rana, from Bangladesh";
int count = s.split(" ").length;
if (string.charAt(i-1) == alphabets.charAt(j)) {
counter++;
}
如果字符是某個字母字符,則您正在增加計數器。 如果它不是字母字符,你應該增加它。
下面的程序將計算一個句子中的單詞數。 在這個程序中,我們計算空格之后的字母。 字母表可以是小寫或大寫。 我們在開頭插入一個空格,因為人們不會以空格開始一個句子。 我們還需要注意任何特殊字符或數字都不應該算作一個單詞。
`導入 java.util.Scanner; 公共類 WordSent {
public static void main(String[] args) {
Scanner in= new Scanner(System.in);
System.out.println("Enter the sentence");
String str=in.nextLine();
String space=" ";
String spaceword=space.concat(str);
int count=0;
for(int i=0; i<spaceword.length()-1;i++)
{
for (int k=0; k<=25; k++)
{
if(spaceword.charAt(i)==' '&& (spaceword.charAt(i+1)==((char)(65+k)) || spaceword.charAt(i+1)==((char)(97+k))))
{
count++;
}
}
}
System.out.println("Total number of words in a sentence are" +" : "+ count);
}
}`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.