检测到的元音后分裂字符串

时间:2014-10-06 13:19:12

标签: java string

我正在尝试将单词分成音节,但是我的语言(Setswana)中的音节类型。在元音之后每次出现音节,例如在“motho”(意思是人)音节是“mo”和“tho”。它们被元音分开,因此识别元音是一个重要的关键

我需要一个代码来识别一个元音并分割一个单词的一部分,1个每个可能的单元......这就是我到目前为止所拥有的:

public void syllable(String word)
{
    int i=0;
    int z=0;
    for (i=i;i<word.length()-1; i++){
        char w = word.charAt(i);
        String w1=Character.toString(w);
        if(w=='a'|| w=='e' || w=='i' || w=='o' || w=='u')
        {
            String[] x= word.split(w1,2);

            System.out.println(Arrays.toString(x));
            //z=i;
            continue;
        }
        continue;
    }
}

1 个答案:

答案 0 :(得分:7)

这是一个复杂的正则表达式概念,但你想要做的是使用积极的后视作为分裂:

String[] syllables = word.split("(?<=[aeiou])");

对我来说,产生:

public static void main(String[] args) {
    for (String word : new String[]{"Motho", "Botswana"}) {
        System.out.println("Word " + word + " Syllables " 
                + Arrays.toString(word.split("(?<=[aeiou])")));
    }
}

并输出:

Word Motho Syllables [Mo, tho]
Word Botswana Syllables [Bo, tswa, na]

更新关于拆分,使用积极的后顾:此regex tutorial does a better job than I can do here

Java Pattern文档详细介绍,但您需要zero-width positive lookbehind