我有一个字符串中的以下行:
colors numResults="100" totalResults="6806926"
我想6806926
从上面的字符串中提取值怎么可能?
到目前为止,我已经使用 StringReader 逐行读取整个字符串。那我该怎么办?
我有一个字符串中的以下行:
colors numResults="100" totalResults="6806926"
我想6806926
从上面的字符串中提取值怎么可能?
到目前为止,我已经使用 StringReader 逐行读取整个字符串。那我该怎么办?
我确定还有一个正则表达式,但这种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 是Attributes,并且<colors numResults="100" totalResults="6806926">
是Element,所以你可以简单地通过 n 得到它myXmlElement.Attributes("totalResults")
。
考虑这是在字符串类型变量的 Mytext 中
现在
Mytext.Substring(Mytext.indexof("totalResults="),7);
//函数 indexof 将返回值开始的点,//7 是您要提取的字符的长度
我正在使用类似的......
此函数会将字符串拆分为键值对列表,然后您可以提取所需的任何内容
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;