C# 如何测试分割字符测试以进行搜索?

C# 如何测试分割字符测试以进行搜索?,c#,string,linq,split,testcase,C#,String,Linq,Split,Testcase,我正在尝试创建select search以按名字或姓氏查找人员,但当用户键入search for name时,我遇到了几个情况 全名字符串,例如“john” 全名包含拆分字符“.”例如:john.dow 全名包含拆分字符“\”例如:john\u dow 全名包含拆分字符“”例如:john dow 我的问题是如果总是运行第一种情况,我的问题是如何使我的代码运行正确的情况 C# 代码有一些问题 第一个条件“!String.IsNullOrEmpty(query)”将强制任何非null或空查询值此时停

我正在尝试创建select search以按名字或姓氏查找人员,但当用户键入search for name时,我遇到了几个情况

  • 全名字符串,例如“john”
  • 全名包含拆分字符“.”例如:john.dow
  • 全名包含拆分字符“\”例如:john\u dow
  • 全名包含拆分字符“”例如:john dow
  • 我的问题是如果总是运行第一种情况,我的问题是如何使我的代码运行正确的情况

    C#


    代码有一些问题

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

  • “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");
    

    忍者总是使用正则表达式。。。所以得到一个并在单词边界上拆分。。。或者添加“拆分”以获取代码示例-。。。或者简单地在非字母上拆分-
    Regex.split(“a,b,c”,@“[^a-z]”
    string str = "john_dow";
    
    string[] names = Regex.Split(str, @"\p{P}|\s");