如何测试split char test来搜索?

时间:2015-02-23 02:11:57

标签: c# string linq split testcase

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

  1. fullName String ex" john"
  2. fullName包含split char"。"例如:john.dow
  3. fullName包含split char" _"例如:john_dow
  4. fullName包含split char" "例如:john dow
  5. 我的问题是如果总是运行第一个案例我的问题如何让我的代码运行正确的案例

    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));
    
                }
    
    
    
            }
        }
    }
    

2 个答案:

答案 0 :(得分:0)

代码存在一些问题。

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

  2. "否则if的条件语句(query.Contains(" _"))" Console.Writeline显示与上面条件完全相同的文本,从而使调试变得有点困难,因为您不确定您所处的语句。 解决方案:更正了Writeline声明中的文字。

  3. 更新代码:

    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");
        }
    

答案 1 :(得分:0)

您可以使用正则表达式:

string str = "john_dow";

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