如何测试拆分字符测试以进行搜索?
How to test split char test to search?
我正在尝试创建 select 搜索以按名字或姓氏查找人员,但是当用户键入搜索姓名时,我有几个案例
- 全名字符串 ex"john"
- 全名包含拆分字符“.” ex:john.道
- 全名包含拆分字符“_”ex:john_dow
- 全名包含拆分字符 " " 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));
}
}
}
}
代码存在一些问题。
第一个条件“!String.IsNullOrEmpty(查询)”此时将强制任何非空或空查询值停止处理。 解决方案:增加条件的范围,如果条件为真,应用程序将结束。
"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");
我正在尝试创建 select 搜索以按名字或姓氏查找人员,但是当用户键入搜索姓名时,我有几个案例
- 全名字符串 ex"john"
- 全名包含拆分字符“.” ex:john.道
- 全名包含拆分字符“_”ex:john_dow
- 全名包含拆分字符 " " 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));
}
}
}
}
代码存在一些问题。
第一个条件“!String.IsNullOrEmpty(查询)”此时将强制任何非空或空查询值停止处理。 解决方案:增加条件的范围,如果条件为真,应用程序将结束。
"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");