2016-04-06 18 views
3

私は、文に適切なa/anを表示するコードを書いています。現在は動作していますが、かなり冗長なようです。私は母音の配列が最初の手紙と比較できると思っていたが、グーグルでそれを実装する方法を見つけることはできない。私はそれをどうやって行うことができますか、より良い方法がありますか?c#文字列の最初の文字と/の文字の配列を比較する

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Shapes; 
using CoreObjectsLibrary; 
using BaseObjects; 

namespace Deliverable5 { 
    /// <summary> 
    /// Interaction logic for frmItem.xaml 
    /// </summary> 
    public partial class frmItem : Window { 
     public frmItem(Item newItem) { 
      InitializeComponent(); 
      //Create textblock to display found item's name 
      TextBlock itemInfo = new TextBlock(); 
      itemInfo.TextWrapping = TextWrapping.Wrap; 
      //Proper a/an caps because name 
      if (newItem.Name[0] == 'A' || newItem.Name[0] == 'E' || newItem.Name[0] == 'I' || newItem.Name[0] == 'O' || newItem.Name[0] == 'U') { 
       itemInfo.Text = "You found an: " + newItem.Name; 
       stkItemDisplay.Children.Add(itemInfo); 
      } 
      else { 
       itemInfo.Text = "You found a: " + newItem.Name; 
       stkItemDisplay.Children.Add(itemInfo); 
      } 
     } 
    } 
} 

答えて

4

ロジック(ブロックの場合)をこれらの行に置き換えることができます。

itemInfo.Text = string.Format("You found {0}: {1}", "aeiouAEIOU".IndexOf(newItem.Name[0]) >= 0? "an": "a" , newItem.Name); 
stkItemDisplay.Children.Add(itemInfo); 
+0

これは最高のソリューションです。ありがとうございます。 – kalenpw

+0

@kalenpwすぐに見つけてくれてありがとう。 –