2016-04-04 6 views
0

У меня есть строка: === СОДЕРЖАНИЕ ФАЙЛА == \ r \ n @ что-то здесь ...} \ r \ n \ r \ n @ something here 2 ... } \ t \ r \ n \ r \ n \ r \ n \ r \ n @ что-то здесь 3 ...} \ r @ что-то здесь 4 ...} \ nзамена части строки по положению в C#

с помощью C#, я хочу получить все строки внутри этой строки, которая начинается с '@' и заканчивается на '}', но у меня проблема с получением позиции «@» и «}», так как строки и вкладки не исправлены. спасибо заранее

вот пример вывода:

new string 1 = "@something here... }"; 
new string 2 = "@something here 2... }"; 
new string 3="@something here 3... }"; 
new string 4="@something here 4...}"; 
+1

использование IndexOf и LastIndexOf, а затем используйте подстроку – rashfmnb

ответ

0

Вы можете использовать регулярное выражение:

var regex = new Regex(@"@[^}]*}"); 
var listOfMatches = new List<string>(); 
for (var match = regex.Match(inputString); match.Success; match = match.NextMatch()) 
{ 
    listOfMatches.Add(match.Value); 
} 
1

См код ниже:

string[] getSubstrings(string str) 
{ 
    return str.Split('@') 
     .Select(s => "@" + s.Substring(0, 1 + s.IndexOf('}'))) 
     .ToArray(); 
} 
+0

, возможно, вы пропустили закрывающую скобку в конце .Select. Отличный ответ. Succinct. +1 – NoSaidTheCompiler

+0

@NoSaidTheCompiler, спасибо, я слишком полагаюсь на визуальную студию, чтобы выделить те, для меня, трудно держать подсчет открытой круглой скобки при вводе в браузере :) –

+0

Я действительно пробовал этот, и он работает на меня Спасибо, ребята, я действительно ценю это. У меня есть еще одна проблема, связанная с этим. Во-первых, как обходить строку с помощью;; @ example "; @something here 3 ...}". я должен добавить execption перед возвратом str.Split ('@')? Второй. скажем, если у меня есть символ '}' или @ внутри '@}', он должен рассматриваться как часть моей строки не как терминатор. образец выходной строки: @BOOK_SERVIE; DATE 01/2015 \ r \ n {\ r \ n \t СОДЕРЖАНИЕ КНИГИ; \t chapter1 page2; ' C ¢}> '\ r \ n chapter2 b8,;' @ C ¢} 8' } –

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