2013-03-20 234 views
7

我有一個Sharepoint項目列表:每個項目都有一個標題,一個描述和一個類型。 我成功檢索到它,我把它叫做result。我想先檢查result中是否有任何項目,以A開頭,然後是B,然後是C等。我將不得不爲每個字母字符做同樣的事情,然後如果我找到以這個字符開頭的單詞,我將不得不顯示粗體字。如何檢查單詞是否以給定字符開頭?

我最初使用此功能顯示的字符:

private string generateHeaderScripts(char currentChar) 
{ 
    string headerScriptHtml = "$(document).ready(function() {" + 
     "$(\"#myTable" + currentChar.ToString() + "\") " + 
     ".tablesorter({widthFixed: true, widgets: ['zebra']})" + 
     ".tablesorterPager({container: $(\"#pager" + currentChar.ToString() +"\")}); " + 
     "});"; 
    return headerScriptHtml; 
} 

我如何檢查是否一個字與給定的字符開始?

+0

我可能不明白你的問題,但如果你可以解析它爲一個字符串,你可以使用'.StartsWith' – 2013-03-20 15:02:49

回答

13

要檢查一個值,使用:

string word = "Aword"; 
    if (word.StartsWith("A")) 
    { 
     // do something 
    } 

你可以做一點擴展方法來傳遞一個清單,A,B和C

public static bool StartsWithAny(this string source, IEnumerable<string> strings) 
    { 
     foreach (var valueToCheck in strings) 
     { 
      if (source.StartsWith(valueToCheck)) 
      { 
       return true; 
      } 
     } 

     return false; 
    } 

    if (word.StartsWithAny(new List<string>() { "A", "B", "C" })) 
    { 
     // do something 
    } 

作爲獎勵,如果你想知道你的字符串開頭的東西,從列表中,並以此爲基礎進行有價值的東西:

public static bool StartsWithAny(this string source, IEnumerable<string> strings, out string startsWithValue) 
    { 
     startsWithValue = null; 

     foreach (var valueToCheck in strings) 
     { 
      if (source.StartsWith(valueToCheck)) 
      { 
       startsWithValue = valueToCheck; 
       return true; 
      } 
     } 

     return false; 
    } 

用法:

string word = "AWord"; 
    string startsWithValue; 
    if (word.StartsWithAny(new List<string>() { "a", "b", "c" }, out startsWithValue)) 
    { 
     switch (startsWithValue) 
     { 
      case "A": 
       // Do Something 
       break; 

      // etc. 
     } 
    } 
+0

寫一個擴展方法的東西,可以很容易地寫成'new []是不是矯枉過正{'a','b','c'}。Contains(s [0])' – Magnus 2013-03-20 15:20:45

+0

我更喜歡「StartsWithAny」的可讀性,但它也取決於預期的重用量。 – 2013-03-20 15:22:32

+0

謝謝!這個 - 帶有'out'參數的擴展方法,正是我想要爲我的需求編寫的內容,即根據路由url段列表檢查傳入的路由段。奇蹟般有效! – Shiva 2017-05-22 00:33:14

0

要在返回字符串的第一個字符,使用方法:

Word.Substring(0,1) //where word is a string 
1

假設你正在檢查的屬性是字符串類型,你可以使用String.StartsWith()方法。例如: -

if(item.Title.StartsWith("A")) 
{ 
    //do whatever 
} 

沖洗和重複

0

您可以實現定期Expr的essions。它們非常強大,但是當你設計你的表情時,它實際上會爲你完成一項任務。

例如找到一個數字,字母,單詞等,這是非常有表現力和靈活性。

他們對這些here一個真正偉大的教程:

這樣的表達的一個例子是:

string input = "Some additional string to compare against."; 
Match match = Regex.Match(input, @"\ba\w*\b", RegexOptions.IgnoreCase); 

這將找到所有以「一」不管啓動項案件。你甚至可以使用Lambda和Linq來使它們更加流暢。

希望有幫助。

0

請嘗試以下操作。您可以執行StartsWith或子0,1(第一個字母)

if (Word.Substring(0,1) == "A") { 
    } 
0

你可以做這樣的事情,檢查是否有特定的字符。

public bool StartsWith(string value, string currentChar) { 
    return value.StartsWith(currentChar, true, null); 
} 

StartsWith方法有一個選項可以忽略大小寫。第三個參數是設置文化。如果爲空,它只是使用當前的文化。使用這種方法,您可以循環查看單詞,運行檢查並處理單詞以根據需要突出顯示第一個字符。

相關問題