2013-12-07 3 views
-1

У меня большой string. Она имеет несколько подстрок в нем, как это:Как получить несколько подстрок в большой строке в C#?

pin=1234& 
pin=827373& 
pin=110& 

Что является наиболее эффективным способом, чтобы вытащить все числа между pin= и & символом и хранить его в массиве, начиная с начала строки к конец?

+0

Regex - http://msdn.microsoft.com/en-us/library/system.text .regularexpressions.regex (v = vs.110) .aspx –

+0

q1) это единый массив строк или строк? q2) каждая строка делится на любой символ? –

+0

большая одиночная строка с большим количеством хлама в нем. он имеет несколько pin = xxxx & внутри него. –

ответ

3
var pins = Regex.Matches(html, @"pin=([0-9]*)"); 
var pinArray = (from Match pin in pins select Convert.ToInt32(pin.Groups[1].Value)).ToArray(); 

Наслаждайтесь :)

+0

Отличное спасибо! –

1

Я не уверен, что это самый эффективный на земле, но вы можете разделить на pin= или &. Использование простых методов String было бы способом ... split, for + indexOf.

Но для этого потребует возрастающий комплекс (if `s, последовательные расщепления) в зависимости от структуры и сложности вашей большой строки.

я до сих пор используют регулярные выражения для надежности и простоты:

Фильтр строки для того, что действительно имеет значение: pin=\d+

Затем извлечь значение: RegEx (\d), или лучше, value.Replace("pin=", "").Replace("&", "")

Я не могу сказать больше, не зная структуры вашей большой строки.

Я уже видел в комментариях, что ваша большая строка содержит содержимое HTML. Я бы принял подход RegEx. Я считаю, что это не проблема производительности шейки бутылки, даже для больших струн.

0

Вы можете извлечь несколько шаблон совпадает с RegEx:

string pattern = @"pin=(\d+)&"; 
Regex rgx = new Regex(pattern); 

foreach (Match match in rgx.Matches(sentence)) 
    Console.WriteLine(match.Groups[1]); 
Смежные вопросы