2014-04-15 125 views
1

好吧,所以我得到了一個小的代碼試圖將英語轉換成豬拉丁語,我得到了元音工作,但輔音更難,根據我有什麼,我只能刪除第一個輔音, 所以這個詞有「什麼」被翻譯成「hatway」而不是「atwhway」請大家幫忙,我還是新到VB這是我豬拉丁語翻譯,輔音

Public Const Vowels As String = "aeiou" 
Public Const Consonant As String = "bcdfghjklmnpqrstvwxyz" 
Private Const ConsonantSuffix As String = "ay" 

For consonantIndex As Integer = 0 To Consonant.Length - 1 Step 1 
      If word.ToLower.StartsWith(Consonant(consonantIndex).ToString) Then 
       word = word.Remove(0, 1) 
       word = word & Consonant(consonantIndex) & ConsonantSuffix 
      End If 
     Next 

回答

1

我建議了不同的策略。找到索引第一個元音,然後重新排列該索引周圍的字母。

Dim index = word.IndexOfAny(Vowels.ToArray) 
If (index > 0) then 
    word = word.Substring(index) & word.Remove(index) 
End If 
word &= ConsonantSuffix 

你可以讓這個稍微通過存儲陣列元音靜態而不是每次調用ToArray高效。

實例(從Wikipedia article關於這個問題採取了):

  • 'happy' → 'appyhay'
  • 'duck' → 'uckday'
  • 'glove' → 'oveglay'
  • 'egg'→'eggay'
  • ' inbox '→' inboxay '
  • ' eight '→' eightay
+0

你是一個生命的救星!剛剛嘗試過,它的工作! – OPJ

+0

等一下,如果你的方法出現像「Bob」這樣的詞,它會像「obBay」一樣出現,你會如何將它變成「obbay」 – OPJ

+1

@OPJ使用'word.Remove(index).ToLower'而不是'word卸下襬臂(指數)'。 –