如何测试拆分字符测试以进行搜索?

How to test split char test to search?

我正在尝试创建 select 搜索以按名字或姓氏查找人员,但是当用户键入搜索姓名时,我有几个案例

  1. 全名字符串 ex"john"
  2. 全名包含拆分字符“.” ex:john.道
  3. 全名包含拆分字符“_”ex:john_dow
  4. 全名包含拆分字符 " " ex:john dow

我的问题是,如果总是 运行 第一种情况,我的问题是如何使我的代码 运行 成为正确的情况

C#

using System;

namespace separatefullnamestring
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            string query = "fulname.kkkkk";


//          var result  = from tableA in ContextDB.tblA
//              join tableB in ContextDB.tblb tableA. ID equals tableB.ID
//              select tableA;
//

            //String.isNullOrEmpty(query)
            if (!String.IsNullOrEmpty (query)) {
                Console.WriteLine ("fullname ");
                //result = result.where(p => p.FirstName.containe(query) || p.LastName.containe(query));

            } else // if full name contine containe . firstName.LastName
                if (query.Contains (".")) {
                Console.WriteLine ("Contains .");
//                  var names = fullName.Split ('.');
//                  string fName = names[0];
//                  string lName = names[1];
//                  result = result.where(p => p.FirstName.containe(fName) || p.LastName.containe(lName));

            } else   // if full name contine containe _ firstName_LastName
                    if (query.Contains ("_")) {
                Console.WriteLine ("Contains .");
//                      var names = fullName.Split ('_');
//                      string fName = names[0];
//                      string lName = names[1];
//                      result = result.where(p => p.FirstName.containe(fName) || p.LastName.containe(lName));

            } else   // if full name contine containe space firstName_LastName
                        if (query.Contains (" ")) {
                Console.WriteLine ("Contains ");
                //var names = fullName.Split ('_');
                //string fName = names[0];
                //string lName = names[1];
                //result = result.where(p => p.FirstName.containe(fName) || p.LastName.containe(lName));

            }



        }
    }
}

代码存在一些问题。

  1. 第一个条件“!String.IsNullOrEmpty(查询)”此时将强制任何非空或空查询值停止处理。 解决方案:增加条件的范围,如果条件为真,应用程序将结束。

  2. "else if (query.Contains ("_"))" Console.Writeline 显示与上面的条件完全相同的文本,因此使调试变得有点困难,因为您不确定你在哪个声明上。 解决方法:更正了 Writeline 语句中的文本。

更新代码:

string query = "fulname_kkkkk";

// var result  = from tableA in ContextDB.tblA
//              join tableB in ContextDB.tblb tableA. ID equals tableB.ID
//              select tableA;
//
//String.isNullOrEmpty(query)
if (!String.IsNullOrEmpty (query)) {
    if (query.Contains (".")) {
        Console.WriteLine ("Contains .");
//                  var names = fullName.Split ('.');
//                  string fName = names[0];
//                  string lName = names[1];
//                  result = result.where(p => p.FirstName.containe(fName) || p.LastName.containe(lName));

    } else if (query.Contains ("_")) {
        Console.WriteLine ("Contains _");
//                      var names = fullName.Split ('_');
//                      string fName = names[0];
//                      string lName = names[1];
//                      result = result.where(p => p.FirstName.containe(fName) || p.LastName.containe(lName));
    } else if (query.Contains (" ")) {
        Console.WriteLine ("Contains ");
                //var names = fullName.Split ('_');
                //string fName = names[0];
                //string lName = names[1];
                //result = result.where(p => p.FirstName.containe(fName) || p.LastName.containe(lName));
    } else {
        Console.WriteLine ("fullname ");
        //result = result.where(p => p.FirstName.containe(query) || p.LastName.containe(query));
    }
    } else {
        Console.WriteLine("Exiting program");
    }

您可以使用正则表达式:

string str = "john_dow";

string[] names = Regex.Split(str, @"\p{P}|\s");