2012-10-31 55 views
2

我想用任何一列的任何單詞開始搜索關鍵字。根據c中每個單詞的開頭搜索字符串#

例如,顯示客戶對象包含名稱是Sameer Singh。

所以,當我搜索變量

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 

我使用此代碼之前爲整個word.But不知道分割字符串的空間和起動元件進行比較。請幫助做到這一點的有效方式

+0

你有沒有字符串s =「我的名字」; bool found = s.contains(「sameer singh」);?這是如果字符串包含你的字符串在任何地方,但如果你想檢查它是否以它開始,你應該使用s.startwith(「sameer singh」)。 –

+0

我們希望您試圖自己解決這個問題,而不是要求社區爲您提供完整的解決方案。謝謝。 – Kev

回答

2

您可以使用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); 

演示:http://ideone.com/mEh5Q1

你可以這樣做,對於每一個字或在你記錄每列。

例如(假設DataRow):

bool rowContains = row.ItemArray.Any(o => string.Format("{0}", o).StartsWith(searchOption)); 

假設String[]

bool arrContains = array.Any(str => str.StartsWith(searchOption)); 

String假設:

bool nameContains = name.Split().Any(w => w.StartsWith(searchOption)); 
3
// 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); 

如果你不知道,如果這個人有一箇中間名,以及,要測試上還有:

var searchString = "Sam"; 
var split = customerName.Split(" "); 
var found = false; 
foreach(var str in split) 
{ 
    found == found || str.StartsWith(searchString); 
    if(found) 
     break; 
} 

的方法結束語這件事:

public bool NameStartsWith(string name,string searchStr) 
{ 
    var split = name.Split(" "); 
    foreach(var str in split) 
    { 
     if(str.StartsWith(searchString)) 
      return true; 
    } 
    return false; 
} 

使用方法如下:

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 
2

你應該String.Split一起使用String.StartsWith

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") 
{ 
    // ... 
相關問題