【问题标题】:How can I pick out a number from a string in C#如何从 C# 中的字符串中提取一个数字
【发布时间】:2019-11-06 20:44:53
【问题描述】:

我有这个字符串:

http://www.edrdg.org/jmdictdb/cgi-bin/edform.py?svc=jmdict&sid=&q=1007040&a=2

如何将 "q=" 和 "&amp" 之间的数字作为整数?

所以在这种情况下我想得到数字:1007040

【问题讨论】:

标签: c#


【解决方案1】:

您实际上在做的是解析 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"]);

【讨论】:

【解决方案2】:

考虑使用正则表达式

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+&amp");

if (match.Success)
{
    string resultStr = match.Value.Replace("q=", String.Empty).Replace("&amp", String.Empty);
    int.TryParse(resultStr, out int result); // result = 1007040
}

【讨论】:

    【解决方案3】:

    似乎您想要一个 html 编码的 uri 的查询参数。你可以这样做:

    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);
    

    【讨论】:

      【解决方案4】:

      使用组的正则表达式方法:

      public int GetInt(string str)
      {
          var match = Regex.Match(str,@"q=(\d*)&amp");
          return int.Parse(match.Groups[1].Value);
      }
      

      绝对没有错误检查!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多