我正在尝试将单词分成音节,但是我的语言(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;
}
}
答案 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