如何在识别两个特定条件的同时让我的程序读取字符串文本的音节:
我的计划到目前为止,
int countS=0;
String scanSyll=text.toUpperCase();
for(int i=0;i<text.length();i++)
{
char nSyllables=scanSyll.charAt(i);
if(nSyllables=='A' || nSyllables=='E' || nSyllables=='I' || nSyllables=='O' || nSyllables=='U' || nSyllables=='Y')
countS=countS+1;
}
`
答案 0 :(得分:0)
为了实现这一目标,我会调查正则表达式,而不是使用完全编程的方式,因为它可以提供更好的灵活性和更容易找到匹配的方法。
正则表达式可能是这样的:
CRUD
这基本上说任何单个辅音后跟一个或多个元音都会触发匹配。
作为一个简单的例子,你可以使用类似的东西:
([bcdfghjklmnpqrstvwx]{1}[aeiouy]+)
Stackoverflow参考用于匹配所有:Create array of regex matches
Nice Regex在线工具:https://regex101.com/
有关正则表达式及其使用方法的更多信息,请查看此页面:http://www.regular-expressions.info/
答案 1 :(得分:0)
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class SyllableRecognizer
{
public static void main (String[] args) throws java.lang.Exception
{
List<String> allMatches = new ArrayList<String>();
Matcher m = Pattern.compile("([bcdfghjklmnpqrstvwx]{1}[aeiouy]{2,}[^$e])",Pattern.CASE_INSENSITIVE).matcher("aakaabboe");
while (m.find())
{
allMatches.add(m.group());
}
System.out.print(allMatches.size());
}
}