音节和java

时间:2015-05-05 20:50:59

标签: java oop

如何在识别两个特定条件的同时让我的程序读取字符串文本的音节:

  1. 两个元音放在一起是一个音节。
  2. 单词末尾的'E'不是音节。
  3. 我的计划到目前为止,

    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;
    } 
    

    `

2 个答案:

答案 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());

    }
}