我正在下載一個xml文件並將其保存到手機(Windows Phone 8應用程序),然後將其作爲列表打開。這份清單中有希臘文字,包括上,下和特殊字符。我希望用戶能夠通過這個列表進行搜索,而不用讓他寫出與列表中相同的文本,所以,到目前爲止,我已經將搜索欄和列表變成了大寫字母,所以如果用戶輸入「to」該列表突出顯示「to」,「To」,「TO」,暫時擦除不匹配的單詞。但是,如果用戶試圖寫出一個沒有語調的字母,則列表中具有語調的單詞將全部擦除,直到用戶按下退格鍵並用語調輸入該字母。替換列表中的特殊字符,以便您可以輕鬆搜索
例如:列表中有2個單詞。 Σπύρος,Μάρα。 用戶按下列表中的字母'Μ',Σπύρος消失,並且Μάρα變爲Μάρα。現在用戶鍵入'α'並且M也會消失,因爲他必須鍵入'ά'。如果他有,它會是Μάρα等。
所以我的問題是,是否可以用沒有語調的相同字符替換一個帶有語調的字符?例如。 í到a,Ά到A等。在Unicode字符表上它們有不同的代碼。
至今代碼:
private void businessFilterString_TextChanged(object sender, TextChangedEventArgs e)
{
sI.ItemsSource = businesses.Collection.Where(b => b.name.ToUpper().Contains(searchBox.Text.ToUpper()) || b.address.ToUpper().Contains(searchBox.Text.ToUpper())).ToList();
LayoutUpdateFlag = true;
}
private void sI_LayoutUpdated(object sender, EventArgs e)
{
if (LayoutUpdateFlag)
{
SearchVisualTree(sI);
}
LayoutUpdateFlag = false;
}
private void SearchVisualTree(DependencyObject targetElement)
{
var count = VisualTreeHelper.GetChildrenCount(targetElement);
for (int i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(targetElement, i);
if (child is TextBlock)
{
textBlock1 = (TextBlock)child;
prevText = textBlock1.Text.ToUpper();
HighlightText();
}
else
{
SearchVisualTree(child);
}
}
}
private void HighlightText()
{
if (textBlock1 != null)
{
string text = textBlock1.Text.ToUpper();
textBlock1.Text = text;
textBlock1.Inlines.Clear();
int index = text.IndexOf(searchBox.Text.ToUpper());
int lenth = searchBox.Text.Length;
if (!(index < 0))
{
Run run = new Run() { Text = text.Substring(index, lenth), FontWeight = FontWeights.ExtraBold};
run.Foreground = new SolidColorBrush(Colors.Orange);
textBlock1.Inlines.Add(new Run() { Text = text.Substring(0, index), FontWeight = FontWeights.Normal});
textBlock1.Inlines.Add(run);
textBlock1.Inlines.Add(new Run() { Text = text.Substring(index + lenth), FontWeight = FontWeights.Normal });
}
else
{
//textBlock1.Text = "No Match";
}
}
}
可能的重複http://stackoverflow.com/questions/249087/how-do-i-remove-diacritics-accents-from-a-string-in-net – Mrchief 2014-10-04 15:37:02
謝謝。我會檢查一下,看看它是否也適用於我的案例! – 2014-10-04 21:52:14