web-dev-qa-db-fra.com

Comment vérifier si un mot commence par un caractère donné?

J'ai une liste d'éléments SharePoint: chaque élément a un titre, une description et un type ..__ Je l'ai récupéré avec succès, je l'ai appelé result. Je veux d'abord vérifier s'il y a un élément dans result qui commence par A, puis B, puis C, etc. le personnage en gras.

J'ai d'abord afficher les caractères en utilisant cette fonction:

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

Comment puis-je vérifier si un mot commence par un caractère donné?

12
sara

Pour vérifier une valeur, utilisez:

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

Vous pouvez créer une petite méthode d’extension pour passer une liste avec A, B et 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
    }

ET en prime, si vous voulez savoir avec quoi votre chaîne commence par une liste et faire quelque chose en fonction de cette valeur:

    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.
        }
    }
27
Dmitriy Khaykin

En supposant que les propriétés que vous vérifiez soient des types chaîne, vous pouvez utiliser la méthode String.StartsWith () .. par exemple: -

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

Rincer et répéter

1
DGibbs

Vous pouvez faire quelque chose comme ceci pour vérifier un caractère spécifique.

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

La méthode StartsWith a une option pour ignorer le cas. Le troisième paramètre consiste à définir la culture. Si null, il utilise simplement la culture actuelle. Avec cette méthode, vous pouvez parcourir vos mots, exécuter la vérification et traiter Word pour mettre en surbrillance ce premier caractère si nécessaire.

1
uadrive

Essayez ce qui suit ci-dessous. Vous pouvez faire StartsWith ou Substring 0,1 (première lettre) 

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

Vous pouvez implémenter expressions régulières. Ils sont assez puissants, mais lorsque vous concevez votre expression, celle-ci accomplira une tâche pour vous.

Par exemple, trouver un chiffre, une lettre, un mot, etc. est assez expressif et flexible.

Ils ont un très bon tutoriel sur eux ici :

Un exemple d'une telle expression serait:

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

Cela trouverait tous les éléments qui commencent par un "a", peu importe le cas. Vous trouvez même utiliser Lambda et Linq pour les rendre encore meilleurs.

Espérons que cela aide.

0
Greg

Pour renvoyer le premier caractère d'une chaîne, utilisez:

Word.Substring(0,1) //where Word is a string
0
Daniel Möller