web-dev-qa-db-fra.com

Besoin d'obtenir une chaîne après un "mot" dans une chaîne en c #

je vais avoir une chaîne en c # pour laquelle je dois trouver un mot "code" spécifique dans la chaîne et obtenir la chaîne restante après le mot "code".

La chaîne est 

"Description de l'erreur, code : -1"

je dois donc trouver le mot code dans la chaîne ci-dessus et je dois obtenir le code d'erreur ... J'ai vu regex mais maintenant clairement compris. Y a-t-il un moyen simple?

36
Narayan
string toBeSearched = "code : ";
string code = myString.Substring(myString.IndexOf(toBeSearched) + toBeSearched.Length);

Quelque chose comme ça?

Peut-être devriez-vous gérer le cas de code :... manquant.

string toBeSearched = "code : ";
int ix = myString.IndexOf(toBeSearched);

if (ix != -1) 
{
    string code = myString.Substring(ix + toBeSearched.Length);
    // do something here
}
78
xanatos
var code = myString.Split(new [] {"code"}, StringSplitOptions.None)[1];
// code = " : -1"

Vous pouvez modifier la chaîne à scinder - si vous utilisez "code : ", le deuxième membre du tableau retourné ([1]) contiendra "-1", en utilisant votre exemple.

15
Oded

Une manière plus simple (si votre seul mot-clé est "code") peut être:

string ErrorCode = yourString.Split(new string[]{"code"}, StringSplitOptions.None).Last();
9
Nogard

utiliser la fonction indexOf() 

string s = "Error description, code : -1";
int index = s.indexOf("code");
if(index != -1)
{
  //DO YOUR LOGIC
  string errorCode = s.Substring(index+4);
}
2
asifsid88

ajouter ce code à votre projet 

  public static class Extension {
        public static string TextAfter(this string value ,string search) {
            return  value.Substring(value.IndexOf(search) + search.Length);
        }
  }

puis utiliser 

"code : string text ".TextAfter(":")
1
hossein sedighian
string originalSting = "This is my string";
string texttobesearched = "my";
string dataAfterTextTobeSearch= finalCommand.Split(new string[] { texttobesearched     }, StringSplitOptions.None).Last();
if(dataAfterTextobeSearch!=originalSting)
{
    //your action here if data is found
}
else
{
    //action if the data being searched was not found
}
0
user3488501
string founded = FindStringTakeX("UID:   994zxfa6q", "UID:", 9);


string FindStringTakeX(string strValue,string findKey,int take,bool ignoreWhiteSpace = true)
    {
        int index = strValue.IndexOf(findKey) + findKey.Length;

        if (index >= 0)
        {
            if (ignoreWhiteSpace)
            {
                while (strValue[index].ToString() == " ")
                {
                    index++;
                }
            }

            if(strValue.Length >= index + take)
            {
                string result = strValue.Substring(index, take);

                return result;
            }


        }

        return string.Empty;
    }
0
Caner LENGER