Silbenzähler in Java
- Verwenden Sie eine benutzerdefinierte Funktion, um einen Silbenzähler in Java zu erstellen
- Verwenden Sie reguläre Ausdrücke, um einen Silbenzähler in Java zu erstellen
Eine Silbe ist eine grundlegende Ausspracheeinheit jedes Wortes, das einen Vokalklang hat. Die Spezifikation für eine Silbe in diesem Tutorial ist, dass jeder benachbarte Vokal als eine Silbe zählt.
Im Wort real
trägt zum Beispiel ea
zu einer Silbe bei. Aber für das Wort regal
gäbe es zwei Silben: e
und a
. Ein e
am Ende des Wortes wird jedoch nicht als Silbe gezählt. Außerdem hat jedes Wort unabhängig von den zuvor genannten Regeln mindestens eine Silbe.
In diesem Tutorial wird erläutert, wie Sie mit Java einen Silbenzähler mit den oben genannten Spezifikationen erstellen.
Verwenden Sie eine benutzerdefinierte Funktion, um einen Silbenzähler in Java zu erstellen
Wir können unsere eigene Methode SyllableCount()
erstellen, die die Silbe basierend auf den angegebenen Spezifikationen zählt. Zuerst verwenden wir die Funktion toLowerCase()
und wandeln den benötigten String in Kleinbuchstaben um. Wir durchlaufen die Zeichenkette und prüfen jedes Zeichen einzeln, ob es ein Vokal ist oder nicht, und das vorherige Zeichen.
Dies implementieren wir im folgenden Code.
import java.util.*;
public class Main {
static public int SyllableCount(String s) {
int count = 0;
s = s.toLowerCase();
for (int i = 0; i < s.length(); i++) { // traversing till length of string
if (s.charAt(i) == '\"' || s.charAt(i) == '\'' || s.charAt(i) == '-' || s.charAt(i) == ','
|| s.charAt(i) == ')' || s.charAt(i) == '(') {
// if at any point, we encounter any such expression, we substring the string from start
// till that point and further.
s = s.substring(0, i) + s.substring(i + 1, s.length());
}
}
boolean isPrevVowel = false;
for (int j = 0; j < s.length(); j++) {
if (s.contains("a") || s.contains("e") || s.contains("i") || s.contains("o")
|| s.contains("u")) {
// checking if character is a vowel and if the last letter of the word is 'e' or not
if (isVowel(s.charAt(j)) && !((s.charAt(j) == 'e') && (j == s.length() - 1))) {
if (isPrevVowel == false) {
count++;
isPrevVowel = true;
}
} else {
isPrevVowel = false;
}
} else {
count++;
break;
}
}
return count;
}
static public boolean isVowel(char c) {
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
return true;
} else {
return false;
}
}
public static void main(String[] args) {
String ans = "Regal";
String ans1 = "Real";
System.out.println("syllables for string " + ans + " is " + SyllableCount(ans));
System.out.println("syllables for string " + ans1 + " is " + SyllableCount(ans1));
}
}
Ausgabe:
syllables for string Regal is 2
syllables for string Real is 1
Bei der obigen Methode teilen wir das Problem auf, lesen diese Zeilen, teilen sie in Wörter auf und zählen dann die Silben für jedes Wort. Danach zählen wir für jede Zeile.
Verwenden Sie reguläre Ausdrücke, um einen Silbenzähler in Java zu erstellen
Wir können auch reguläre Ausdrücke verwenden. Wir könnten die Funktion Matcher.find()
verwenden, um die Silben anhand eines Musters für die angegebene Zeichenkette zu finden.
Denken Sie daran, das Paket java.util.regex
zu importieren, um reguläre Ausdrücke zu verwenden.
Siehe den Code unten.
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
static public int countSyllables(String s) {
int counter = 0;
s = s.toLowerCase(); // converting all string to lowercase
if (s.contains("the ")) {
counter++;
}
String[] split = s.split("e!$|e[?]$|e,|e |e[),]|e$");
ArrayList<String> al = new ArrayList<String>();
Pattern tokSplitter = Pattern.compile("[aeiouy]+");
for (int i = 0; i < split.length; i++) {
String s1 = split[i];
Matcher m = tokSplitter.matcher(s1);
while (m.find()) {
al.add(m.group());
}
}
counter += al.size();
return counter;
}
public static void main(String[] args) {
String ans = "Regal";
System.out.println("syllables for string " + ans + " is " + countSyllables(ans));
}
}
Ausgabe:
syllables for string Regal is 2
Verwandter Artikel - Java String
- So führen Sie die Konvertierung von String in String-Array in Java durch
- Wie entferne ich eine Unterzeichenkette aus einer Zeichenkette in Java
- So konvertieren Sie Byte-Array in Hex-String in Java
- Wie man Java-String in Byte konvertiert
- Generieren Sie eine zufällige Zeichenkette in Java
- Die Swap-Methode in Java