2015-08-12 1 views
-2

J'ai une chaîne qui contient quelque chose comme ça "'asd asd asd/* ... asd' asd ..." Je veux juste récupérer seulement la valeur qui commence à partir de 'et termine la même caractère ». Donc à partir de cette chaîne, la valeur sera "asd asd asd/* ... asd"Trouver le mot dans la chaîne C#

J'ai essayé avec le code ci-dessous, mais cela ne fonctionne pas.

string HDtext = new string(TextChar.SkipWhile(c => !Char.IsSymbol(c)) 
            .TakeWhile(c => Char.IsLetter(c) || 
                c == '*' || 
                c == '/' || 
                c == ' ') 
            .ToArray()); 

Est-ce que quelqu'un sait comment le récupérer correctement?

+1

['Sous-chaîne'] (https://msdn.microsoft.com/fr-fr/library/system.string.substring%28v=vs.110%29.aspx) et [' IndexOf'] (https : //msdn.microsoft.com/en-us/library/system.string.indexof%28v=vs.110%29.aspx) –

Répondre

3

J'utilise Regex ici

string input = "'asd asd asd/* ... asd ' asd..."; 
var output = Regex.Match(input, @"'(.+?)'").Groups[1].Value; 
1

String.Split serait une option

string input = "'asd asd asd/* ... asd ' asd..."; 
string result = input.Split('\'')[1]; 
+0

Que faire si l'entrée n'a pas de caractère '' ''. Une solution: 'input.Split ('\' '). Skip (1) .FirstOfDefault()' – tafia

0

vous pouvez obtenir l'index de la première et la dernière occurrence de votre choix ombles puis il suffit de prendre la sous-chaîne entre leur. Comme cela, par exemple:

var __text = "'asd asd asd/* ... asd' asd..."; 
var __startIndex = __text.IndexOf("'") + 1; 
var __length = __text.LastIndexOf("'") - __startIndex; 

var __subString = __text.Substring(__startIndex, __length); 
0

Si vous souhaitez utiliser LINQ:

string result = new string(str.SkipWhile(c => c != '\'') 
           .Skip(1) 
           .TakeWhile(c => c != '\'').ToArray()); 

S'il y a plus de 2 ' caractères et que vous voulez obtenir tout entre le premier et le dernier:

string result = new string(str.SkipWhile(c => c != '\'').Skip(1) 
           .Reverse() 
           .SkipWhile(c => c != '\'').Skip(1) 
           .Reverse() 
           .ToArray());