【问题标题】:Pig Latin translator, consonants猪拉丁语翻译,辅音
【发布时间】:2014-04-15 21:41:58
【问题描述】:

好的,所以我得到了一个尝试将英语转换为猪拉丁语的小代码,我得到了元音,但辅音更难,根据我所拥有的,我只能删除第一个辅音, 所以“what”这个词被翻译成“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

【问题讨论】:

    标签: vb.net string


    【解决方案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'

    【讨论】:

    • 你是救生员!!刚刚试了一下,效果很好!!
    • 等等,用你的方法用像“Bob”这样的词怎么样,结果是“obBay”,你怎么把它变成“obbay”
    • @OPJ 使用word.Remove(index).ToLower 而不是word.Remove(index)
    • @OPJ 这有一些问题。您必须首先确定这是标题大小写(“Bob”)还是全大写单词(“WHAT”),然后相应地应用大写规则。您还必须调整元音数组以接受大写和小写字符串。这些任务都不太难,我相信你会在谷歌或这里找到好的解决方案,但这可能超出了这个问题的范围。
    • @OPJ 从stackoverflow.com/questions/448206/… 开始,然后看看如何弄清楚如何使用Char.IsUpper 来测试标题大小写以及所有大写字母。然后您可以搜索各种解决方案将单词转换为标题大小写(即大写单词)。自己尝试一下。如果您遇到困难,您可以随时回到这里再问一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多