2016-04-26 15 views
0

私のプログラミング割り当ての1つは、単語を取り込んで複数にするVBプログラムを作成する必要があります。私たちは直面している困難について書かなければなりません。
私はちょうどこれについてどうやって動くように努めています。私が見ることのできるところから、文字をその文字に分割し、文字列の最後の文字が何であるかを特定する必要があります。そこから、string.join演算子を使って最後に "s"のようなものを追加するif文のロードのケースだと思います。結合はかなりシンプルだと思われますが、入力語を分割して最後の文字を特定する方法です。
私はuniで初めての1年目なので、プログラミングはあまり進んでいないので、可能な限り知識が限られている人には理解できるようにしてください!あなただけVisual Basicで単語を分割する

Dim myString As String = "Shoe" 
myString += "s" 
'myString is now "Shoes" 

または最後の文字が既にあるかどうかをチェックしますか、文字列の末尾に「S」の文字を追加したい場合は、事前に

おかげで、 アンドリュー

+2

を支援stringは文字の配列です。長さ-1を使用して配列にインデックスを付けると、最後の文字を取得できます。 Linqを使用すると、.Last()拡張メソッドを使用して最後の文字を取得できます。さまざまな方法がたくさんあります。しかし、あなたは本当にそれをやりたくはありません。ペンと紙とランダムな言葉のリストで座ってください。次に、それらを複数にします。あなたはどうしていますか?あなたの行動や言葉のパターンを探してください。これらのパターンを特定することがあなたのアルゴリズムになります。アルゴリズムを取得したら、コードを操作できます。 – Will

+0

これに役立つ文字列演算の負荷があります。 MSDNの文字列クラスのすべてのメソッドを確認してください。https://msdn.microsoft.com/en-us/library/system.string(v=vs.110).aspx –

+0

これまでに何を試みましたか?あなたの特定の問題は何ですか?いくつかのコードを見ることができますか? –

答えて

0

マイクとウィルは、多くの可能性があります言ったように、このコードは、単にいくつかのケースのために、それはIfステートメントを使用している、しかしCase文は

Protected Sub btnPlural_Click(sender As Object, e As EventArgs) Handles btnPlural.Click 
    Dim strWord As String 
    Dim lastLetter As String 
    Dim secondlast As String 


    If txtWord.Text <> "" Then 
     strWord = txtWord.Text 
     lastLetter = GetChar(strWord, strWord.Length) 
     secondlast = GetChar(strWord, strWord.Length - 1) 
     If lastLetter = "r" Or lastLetter = "p" Or lastLetter = "t" Then 
      strWord = strWord + "s" 
      lblPlural.Text = strWord 
     End If 
     If lastLetter = "e" Then 
      If secondlast = "f" Then 
       strWord = strWord.Substring(0, strWord.Length - 2) + "ves" 
       lblPlural.Text = strWord 
      Else 
       strWord = strWord + "s" 
       lblPlural.Text = strWord 
      End If 

     End If 

     If lastLetter = "x" Then 
      strWord = strWord + "es" 
      lblPlural.Text = strWord 
     End If 
     If lastLetter = "h" Then 
      If secondlast = "c" Then 
       strWord = strWord + "es" 
       lblPlural.Text = strWord 
      Else 
       strWord = strWord + "s" 
       lblPlural.Text = strWord 
      End If 
     End If 

     If lastLetter = "y" Then 
      If secondlast = "t" Or secondlast = "d" Or secondlast = "n" Then 
       strWord = strWord.Substring(0, strWord.Length - 1) + "ies" 
       lblPlural.Text = strWord 
      ElseIf secondlast = "e" Or secondlast = "a" Or secondlast = "o" Then 
       strWord = strWord + "s" 
       lblPlural.Text = strWord 
      End If 
     End If 

    End If 

End Sub 

良いかもしれない希望これはA

+0

ありがとう、そんなに。それは多くをクリアしました!私の問題は、教師が本当に答えの近くに私たちを指摘していないということでした。本当にありがとう! –

+0

@AndrewRichardson私の答えがあなたを助けてくれたなら、それを受け入れられた答えとしてマークすることができました。 – abichango

0

"s"、 "かわいい"を "かわい子"などに変更しますか?

+0

いくつかのレベルでは、タコの複数がオクトピであり、複数の羊が羊であるため、例外リストが必要になります。私は、単語が研究された例外リストに含まれていない場合、SELECT CASE RIGHT(str、3)、最後の2文字、そして最後の文字を持っていなければならないと思います。私は実際にあなたが3または2をスキャンする必要があるかどうかも分かりませんが、辞書が役立つかもしれません。 –

+1

私は、文字列を連結するために '&='を使うことをお勧めします。 –

+0

オンラインでも複数形で利用可能なオープンソースの辞書があります。例外リストに追加します。ちなみに、iircは複数の「Octopus」が「Octopuses」または「Octopodes」ですが、「Octopi」はギリシャ語とラテン語を混ぜています。 – peterG

0

これで終わりに年代 '文字を追加する方法についてだけ話題であれば、私はString.Formatを使用すると「s」を追加することをお勧め:

Public Function pluralize(ByVal DesignString AS String) AS String 

     Return String.Format("{0}s",DesignString) ' ex : Shoe -> Shoes 

End Function 

これはあなたのためのhelpulすることができホップ。

関連する問題