2013-03-20 20 views
7

Ho una lista di articoli Sharepoint: ogni articolo ha un titolo, una descrizione e un tipo. L'ho recuperato con successo, l'ho chiamato result. Voglio prima controllare se c'è qualche articolo in result che inizia con A poi B poi C, ecc. Dovrò fare lo stesso per ogni carattere dell'alfabeto e poi se trovo una parola che inizia con questo personaggio dovrò mostrare il personaggio in grassetto.Come verificare se una parola inizia con un determinato carattere?

ho inizialmente visualizza i caratteri di utilizzare questa funzione:

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; 
} 

Come posso controllare se una parola inizia con un determinato carattere?

+0

Potrei non capire la tua domanda, ma se riesci ad analizzarla su una stringa puoi usare '.StartsWith' –

risposta

13

Per controllare un valore, l'uso:

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

Si può fare un po 'di metodo di estensione per passare un elenco con A, B, e 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 
    } 

e come bonus, se volete sapere che cosa il vostro stringa inizia con, da una lista, e fare qualcosa sulla base di tale valore:

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; 
    } 

Usage:

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

Non è eccessivo usare un metodo di estensione per qualcosa che può essere già scritto facilmente come' nuovo [] {'a', 'b', 'c'}. Contiene (s [0]) ' – Magnus

+0

Preferisco la leggibilità di" StartsWithAny ", ma dipende anche dalla quantità di riutilizzo previsto. –

+0

Grazie! Questo - il metodo di estensione con il parametro 'out', è esattamente ciò che stavo pensando di scrivere per i miei bisogni, che è quello di controllare il segmento di percorso in entrata contro un elenco di segmenti di url del percorso. Funziona come un fascino! – Shiva

0

Per tornare al primo carattere di una stringa, utilizzare:

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

Supponendo che le proprietà che si sta controllando sono tipi di stringa, è possibile utilizzare il metodo String.StartsWith() .. per esempio: -

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

sciacquare e ripetere

0

Si potrebbe implementare regolare Expr essenze. Sono abbastanza potenti, ma quando disegni la tua espressione, realizzerà un compito per te.

Per esempio trovare un numero, una lettera, una parola e così via è abbastanza espressivo e flessibile.

Hanno davvero un grande tutorial su di loro here:

Un esempio di tale espressione sarebbe:

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

che avrebbe trovato tutte le voci che iniziano con una "a" non importa il Astuccio. Trovi anche utilizzare Lambda e Linq per farli scorrere ancora meglio.

Speriamo che questo aiuti.

0

Prova quanto segue. È possibile effettuare una StartsWith o Substring 0,1 (prima lettera)

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

Si potrebbe fare qualcosa di simile per verificare la presenza di un carattere specifico.

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

Il metodo StartsWith ha un'opzione per ignorare il caso. Il terzo parametro è impostare la cultura. Se nullo, utilizza solo la cultura corrente. Con questo metodo, puoi scorrere le tue parole, eseguire il controllo ed elaborare la parola per evidenziare quel primo carattere secondo necessità.

Problemi correlati