0

我有一个字符串中的以下行:

colors numResults="100" totalResults="6806926"

我想6806926从上面的字符串中提取值怎么可能?

到目前为止,我已经使用 StringReader 逐行读取整个字符串。那我该怎么办?

4

5 回答 5

2

我确定还有一个正则表达式,但这种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 );
    }
}

演示

于 2013-07-03T11:46:59.673 回答
0

使用 Linq2Xml 可以读取,numResults 和 totalResults 是Attributes,并且<colors numResults="100" totalResults="6806926">Element,所以你可以简单地通过 n 得到它myXmlElement.Attributes("totalResults")

于 2013-07-03T11:45:21.703 回答
0

考虑这是在字符串类型变量的 Mytext 中

现在

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

//函数 indexof 将返回值开始的点,//7 是您要提取的字符的长度

我正在使用类似的......

于 2013-07-03T11:48:33.400 回答
0

此函数会将字符串拆分为键值对列表,然后您可以提取所需的任何内容

        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;
    }
于 2013-07-03T11:52:33.170 回答
0

您可以使用正则表达式:

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;
于 2013-07-03T11:53:23.127 回答