在这个Pig拉丁语翻译器中如何处理标点符号?

时间:2019-04-02 16:04:57

标签: java

其余的代码可以正常工作,但是我无法弄清楚如何防止标点符号被翻译。

public class PigLatintranslator
{
    public static String translateWord (String word)
    {
        String lowerCaseWord = word.toLowerCase ();
        int pos = -1; 
        char ch;

        for (int i = 0 ; i < lowerCaseWord.length () ; i++)
        {
            ch = lowerCaseWord.charAt (i);

            if (isVowel (ch))
            {
                pos = i;
                break;
            }
        }

        if (pos == 0 && lowerCaseWord.length () != 1) //translates if word starts with vowel
        {
            return lowerCaseWord + "way"; // Adding "way" to the end of string
        }

        else if (lowerCaseWord.length () == 1) //Ignores words that are only 1 character
        {
            return lowerCaseWord;
        }

        else if (lowerCaseWord.charAt(0) == 'q' && lowerCaseWord.charAt(1) == 'u')//words that start with qu
        {
            String a = lowerCaseWord.substring (2);
            return a + "qu" + "ay";
        }

        else
        {
            String a = lowerCaseWord.substring (1);
            String b = lowerCaseWord.substring (0,1); 
            return a + b + "ay"; // Adding "ay" at the end of the extracted words after joining them.
        }
    }

    public static boolean isVowel (char ch) checks for vowel
    {
        if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' || ch == 'y')
        {
            return true;
        }
        return false;
    }
}

我需要翻译才能忽略标点符号。例如“问题?”应该翻译成“ esquaquay”? (问号仍处于相同位置且未翻译)

1 个答案:

答案 0 :(得分:0)

正如Andreas所说,如果该函数只期望一个单词,则调用函数应负责确保没有完整的句子或标点传递给该函数。话虽如此,如果您需要翻译器来处理此问题,则需要找到出现标点或非字母字符的字符串的索引。我添加了一个主要方法来测试功能:

public static void main(String[] args) {
    System.out.println(translateWord("QUESTION?"));

}

我在qu格中添加了一个循环,以查找要输入的标点符号,这两项检查是查看位置i处的字符是否在a-z范围内。然后,子字符串只会转到找到标点的地方。

        int i;
        for (i = 0; i < lowerCaseWord.length(); i++) {
            if(lowerCaseWord.charAt(i) > 'z' || lowerCaseWord.charAt(i) < 'a') {
                break;
            }
        }
        String a = lowerCaseWord.substring (2, i);
        String b = lowerCaseWord.substring(i);
        return a + "qu" + "ay" + b;

如果您担心带有连字符和诸如此类的单词,可能需要进行一些调整,但这应该贯穿基本思想。

这是我收到的输出:

$javac PigLatintranslator.java
$java -Xmx128M -Xms16M PigLatintranslator
estionquay?