java - 我可以改进这个 Pig-Latin 转换器吗?

标签 java string substring translation

我是 Java 新手,我为 PigLatin 制作了这个小翻译器。

package stringmanipulation;

public class PigLatinConverter {
    public String Convert(String word){
        int position = 0;
        if (!IsVowel(word.charAt(0))) {
            for (int i= 0; i < word.length(); i++) {
                if (IsVowel(word.charAt(i))) {
                    position = i;
                    break;
                }
            }
            String first = word.substring(position, word.length());
            String second = word.substring(0, position) + "ay";

            return first + second;
        } else {
            return word + "way";
        }
    }

    public boolean IsVowel(char c){
        if (c == 'a')
            return true;
        else if(c == 'e')
            return true;
        else if(c == 'i')
            return true;
        else if(c == 'o')
            return true;
        else if(c == 'u')
            return true;
        else
            return false;        
    }
}

我可以做出任何改进吗?

最新的 Java 版本中是否有我可能不知道的巧妙 Java 技巧?我有 C# 背景。

谢谢!

最佳答案

我将重写 isVowel(char ch) 如下:

return "aeiou".indexOf(ch) != -1;

我会写以下内容:

// String first = word.substring(position, word.length());
   String first = word.substring(position);

我还会重命名方法名称以遵循编码约定。

当然,对于我来说,我也会使用正则表达式来代替 substringfor 循环。

System.out.println("string".replaceAll("([^aeiou]+)(.*)", "$2$1ay"));
// ingstray

引用文献

关于java - 我可以改进这个 Pig-Latin 转换器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3399548/

相关文章:

java - org.apache.poi 中的异常

java - 数字字符串上的奇怪错误 : NumberFormatException

javascript - JavaScript 函数中的正则表达式问题 - 不替换任何内容

javascript - 如何将速度数组 [x, y, z] 转换为要存储在数据库中的字符串?

batch-file - 如何在批处理脚本的for循环中使用子字符串?

java - 从字符串中删除时间戳

java - 如何在hibernate中创建相关子查询

java - 序列化和 RMI

java - Android,从任何 URL/任何文件、avi 等保存。它仅在模拟器上运行,不在 Samsung GalaxyS3 上运行

string - 较长字符串中最长重复字符串的长度