2016-04-06 85 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感謝您快速查找,現在更新。 –