Changed implementation of the method that manually count words in a string for originality.
This commit is contained in:
parent
f9cf8eefe2
commit
0c27e46de3
@ -3,11 +3,14 @@ package com.baeldung.string.wordcount;
|
|||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
|
|
||||||
public class WordCounter {
|
public class WordCounter {
|
||||||
|
static final int WORD = 0;
|
||||||
|
static final int SEPARATOR = 1;
|
||||||
|
|
||||||
public static int countWordsUsingRegex(String arg) {
|
public static int countWordsUsingRegex(String arg) {
|
||||||
if (arg == null) {
|
if (arg == null) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
final String[] words = arg.split("\\pP|\\s+");
|
final String[] words = arg.split("[\\pP\\s]+");
|
||||||
return words.length;
|
return words.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -23,21 +26,19 @@ public class WordCounter {
|
|||||||
if (arg == null) {
|
if (arg == null) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
int flag = SEPARATOR;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
int stringLength = arg.length();
|
||||||
|
int characterCounter = 0;
|
||||||
|
|
||||||
boolean isAWord = false;
|
while (characterCounter < stringLength) {
|
||||||
int argEnd = arg.length() - 1;
|
if (Character.isLetter(arg.charAt(characterCounter)) && flag == SEPARATOR) {
|
||||||
|
flag = WORD;
|
||||||
for (int i = 0; i < arg.length(); i++) {
|
|
||||||
if (Character.isLetter(arg.charAt(i)) && i != argEnd) {
|
|
||||||
isAWord = true;
|
|
||||||
} else if (!Character.isLetter(arg.charAt(i)) && isAWord) {
|
|
||||||
count++;
|
|
||||||
isAWord = false;
|
|
||||||
} else if (Character.isLetter(arg.charAt(i)) && i == argEnd) {
|
|
||||||
count++;
|
count++;
|
||||||
|
} else if (!Character.isLetter(arg.charAt(characterCounter))) {
|
||||||
|
flag = SEPARATOR;
|
||||||
}
|
}
|
||||||
|
characterCounter++;
|
||||||
}
|
}
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user