C# Чтение определенных значений в строке

У меня есть следующая строка из строки:

colors numResults="100" totalResults="6806926"

Я хочу извлечь значение 6806926 из приведенной выше строки Как это возможно?

До сих пор я использовал StringReader для чтения всей строки построчно. Тогда что мне делать?

5 ответов

Решение

Рассмотрим это в Mytext переменной типа string

сейчас

Mytext.Substring(Mytext.indexof("totalResults="),7); 

// функция indexof вернет точку, где значение start, // а 7 - длина символов, которые вы хотите извлечь

Я использую подобное этого........

Я уверен, что есть также регулярное выражение, но это string Подход должен работать также:

string xmlLine = "[<colors numResults=\"100\" totalResults=\"6806926\">]";
string pattern = "totalResults=\"";
int startIndex = xmlLine.IndexOf(pattern);
if(startIndex >= 0)
{
    startIndex += pattern.Length;
    int endIndex = xmlLine.IndexOf("\"", startIndex); 
    if(endIndex >= 0)
    {
        string token = xmlLine.Substring(startIndex,endIndex - startIndex);
        // if you want to calculate with it
        int totalResults = int.Parse( token );
    }
}

демонстрация

Вы можете читать с Linq2Xml, numResults и totalResults являются Атрибутами, и <colors numResults="100" totalResults="6806926"> это элемент, так что вы можете просто получить егоmyXmlElement.Attributes("totalResults"),

Эта функция разбивает строку на список пар "ключ-значение", которые затем можно извлечь из списка

        static List<KeyValuePair<string, string>>  getItems(string s)
    {
        var retVal = new List<KeyValuePair<String, string>>();

        var items = s.Split(' ');

        foreach (var item in items.Where(x => x.Contains("=")))
        {
            retVal.Add(new KeyValuePair<string, string>( item.Split('=')[0], item.Split('=')[1].Replace("\"", "") ));
        }

        return retVal;
    }

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

string input = "colors numResults=\"100\" totalResults=\"6806926\"";
string pattern = "totalResults=\"(?<results>\\d+?)\"";
Match result = new Regex(pattern).Match(input);
Console.WriteLine(result.Groups["results"]);

Не забудьте включить это:

using System.Text.RegularExpressions;
Другие вопросы по тегам