我有这个字符串:
http://www.edrdg.org/jmdictdb/cgi-bin/edform.py?svc=jmdict&sid=&q=1007040&a=2
我该如何从“q=”和“&”之间提取数字并转化为整数?
因此,在这个例子中,我想要获取数字:1007040
我有这个字符串:
http://www.edrdg.org/jmdictdb/cgi-bin/edform.py?svc=jmdict&sid=&q=1007040&a=2
我该如何从“q=”和“&”之间提取数字并转化为整数?
因此,在这个例子中,我想要获取数字:1007040
你实际上正在解析一个URI,因此你可以使用 .Net 库来正确地执行此操作,如下所示:
var str = "http://www.edrdg.org/jmdictdb/cgi-bin/edform.py?svc=jmdict&sid=&q=1007040&a=2";
var uri = new Uri(str);
var query = uri.Query;
var dict = System.Web.HttpUtility.ParseQueryString(query);
Console.WriteLine(dict["amp;q"]); // Outputs 1007040
如果您想要将数字字符串作为整数使用,则需要对其进行解析:
int number = int.Parse(dict["amp;q"]);
String str = "http://www.edrdg.org/jmdictdb/cgi-bin/edform.py?svc=jmdict&sid=&q=1007040&a=2";
Match match = Regex.Match(str, @"q=\d+&");
if (match.Success)
{
string resultStr = match.Value.Replace("q=", String.Empty).Replace("&", String.Empty);
int.TryParse(resultStr, out int result); // result = 1007040
}
看起来您想要一个查询参数的URI进行HTML编码。您可以这样做:
Uri uri = new Uri(HttpUtility.HtmlDecode("http://www.edrdg.org/jmdictdb/cgi-bin/edform.py?svc=jmdict&sid=&q=1007040&a=2"));
string q = HttpUtility.ParseQueryString(uri.Query).Get("q");
int qint = int.Parse(q);
使用组的正则表达式方法:
public int GetInt(string str)
{
var match = Regex.Match(str,@"q=(\d*)&");
return int.Parse(match.Groups[1].Value);
}
那里绝对没有错误检查!
string result = Regex.Match(source, @"q\s*=\s*(?<value>[0-9]+)").Groups["value"].Value;
- Dmitry Bychenko