[英]searching of string according to start with each word in c#
I want to search a keyword by start with any word of any column. 我想以任何列的任何单词开头来搜索关键字。
For example displayedCustomers object contain Name which is Sameer Singh. 例如,displayedCustomers对象包含名称为Sameer Singh的名称。
So when my search variable 所以当我的搜索变量
searchOption="eer" //it should not search,
searchOption="ingh" //it should not search,
searchOption="Sa" //it should search,
searchOption="Si" //it should search,
searchOption="ameer" //it should not search
I am using this code previously for whole word.But don't know to split space of string and compare with starting element. 我以前在整个单词中使用此代码。但是不知道要拆分字符串的空间并与起始元素进行比较。 Please help to do this in efficient way
请帮助以有效的方式做到这一点
// Split the word by space
var split = str.Split(" ");
// Check if firstname or lastname starts with searchString
var found = split[0].StartsWith(searchString) || split[1].StartsWith(searchString);
If you dont know if the person has a middle name as well, and you wish to test on that as well: 如果您不知道此人是否也有中间名,并且您也想对此进行测试:
var searchString = "Sam";
var split = customerName.Split(" ");
var found = false;
foreach(var str in split)
{
found == found || str.StartsWith(searchString);
if(found)
break;
}
Wrapping this up in a method: 用一种方法将其包装起来:
public bool NameStartsWith(string name,string searchStr)
{
var split = name.Split(" ");
foreach(var str in split)
{
if(str.StartsWith(searchString))
return true;
}
return false;
}
Use it like this: 像这样使用它:
var matches = NameStartsWith("Sameer Singh","Sa"); // true
var matches = NameStartsWith("Sameer Singh","Si"); // true
var matches = NameStartsWith("Sameer Singh","S"); // true
var matches = NameStartsWith("Bobby Singer Bobberson","Sing"); // true
var matches = NameStartsWith("Sameer Singh","meer"); // false
You can use String.StartsWith
您可以使用
String.StartsWith
string name = "Sameer Singh";
string searchOption = "eer";
bool nameStartsWith = name.StartsWith(searchOption);
Console.Write("{0} {1} {2}"
, name
, nameStartsWith ? "starts with" : "starts not with"
, searchOption);
Demo: http://ideone.com/mEh5Q1 演示: http : //ideone.com/mEh5Q1
You can do that for every word or every column in your record. 您可以对记录中的每个单词或每一列执行此操作。
For example(assuming DataRow
): 例如(假设
DataRow
):
bool rowContains = row.ItemArray.Any(o => string.Format("{0}", o).StartsWith(searchOption));
assuming String[]
: 假设
String[]
:
bool arrContains = array.Any(str => str.StartsWith(searchOption));
assuming String
: 假设
String
:
bool nameContains = name.Split().Any(w => w.StartsWith(searchOption));
You should use String.StartsWith
together with String.Split
: 您应该将
String.StartsWith
与String.Split
一起使用:
public bool IsMatching(string Name, string SearchOption)
{
foreach (string s in Name.Split(' '))
{
if s.StartsWith(SearchOption)
return true;
}
return false;
}
// use it like:
if IsMatching("Sameer Singh", "Sa")
{
// ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.