麻烦比较wp7应用程序中的字符串

时间:2012-11-30 08:16:36

标签: c# windows string windows-phone-7

以下是我的代码示例。

我在这里收到另一页的字符串变量。

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        string newparameter = this.NavigationContext.QueryString["search"];
        weareusingxml();

        displayResults(newparameter);

    }

private void displayResults(string search)
{
bool flag = false;
try
{
    using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
    {
        using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("People.xml", FileMode.Open))
        {
            XmlSerializer serializer = new XmlSerializer(typeof(List<Person>));
            List<Person> data = (List<Person>)serializer.Deserialize(stream);
            List<Result> results = new List<Result>();


            for (int i = 0; i < data.Count; i++)
            {
                string temp1 = data[i].name.ToUpper();
                string temp2 = "*" + search.ToUpper() + "*";
                if (temp1 == temp2)
                {
                    results.Add(new Result() {name = data[i].name, gender = data[i].gender, pronouciation = data[i].pronouciation, definition = data[i].definition, audio = data[i].audio });
                  flag = true; 
                }
            }

            this.listBox.ItemsSource = results;

}
catch
{
    textBlock1.Text = "error loading page";

}
if(!flag)
{
  textBlock1.Text = "no matching results";
}

}

运行代码时没有任何内容加载到列表中,我只是收到消息“没有匹配的结果”。

3 个答案:

答案 0 :(得分:1)

看起来你正在尝试进行包含搜索(根据您在搜索字符串周围添加*的猜测。您可以删除'*'并执行字符串。包含匹配。

试试这个。

string temp1 = data[i].name.ToUpper();
string temp2 = search.ToUpper()
if (temp1.Contains(temp2))
{

答案 1 :(得分:1)

看起来你正试图检查一个字符串是否包含另一个字符串(即子字符串匹配),而不是它们是否相等。

在C#中,你这样做:

haystack = "Applejuice box";
needle = "juice";
if (haystack.Contains(needle))
{
     // Match
}

或者,在您的情况下(并跳过您添加到字符串temp2的*

if (temp1.Contains(temp2))
{
   // add them to the list 
}

答案 2 :(得分:0)

您是否检查过以确认data.Count > 0