2013-03-20 4 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' –

ответ

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'}. Содержит (s [0]) ' – Magnus

+0

Я предпочитаю читаемость« StartsWithAny », но это также зависит от ожидаемого количества повторного использования. –

+0

Спасибо! Это - метод расширения с параметром 'out', именно то, что я собирался написать для своих нужд, а именно, чтобы проверить сегмент входящего маршрута на список сегментов URL-адреса маршрута. Работает как шарм! – Shiva

0

Чтобы вернуть первый символ в строке, используйте:

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

Предполагая, что свойства вы проверяете типы строк, вы можете использовать метод String.StartsWith() .. например: -

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

полоскание и повторить

0

Вы могли бы реализовать Regular Expr существительные. Они достаточно мощные, но когда вы разрабатываете свое выражение, оно фактически выполнит задачу для вас.

Например, найти номер, букву, слово и т. Д., Это довольно выразительно и гибко.

Они имеют очень большой учебник на них here:

Примером такого выражения будет:

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

Это было бы найти все элементы, которые начинаются с «а», независимо от дело. Вы также можете использовать Лямбду и Линк, чтобы они стали еще лучше.

Надеюсь, это поможет.

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 имеет возможность игнорировать случай. Третий параметр - установить культуру. Если null, он просто использует текущую культуру. С помощью этого метода вы можете прокручивать свои слова, запускать проверку и обрабатывать слово, чтобы выделить этот первый символ по мере необходимости.

Смежные вопросы