【问题标题】:Getting a number part from a url string in c# [closed]从 c# 中的 url 字符串中获取数字部分 [关闭]
【发布时间】:2021-12-15 06:52:39
【问题描述】:

我有一个如下所示的 URL 字符串:

https://example.com/app/1095600/example2234

我只想得到“1095600

这个数字是可变的,可以是三位或更多位。

【问题讨论】:

  • 它是否总是在 URL 中的同一个位置(总是在 /app/ 之后或总是在域之后的第二个位置)?要么。也许,始终是 URL 中唯一完全数字的块
  • 欢迎来到 Stack Overflow。请通过tour 了解 Stack Overflow 的工作原理,并阅读How to Ask 以了解如何提高问题的质量。请显示您尝试过的尝试以及您从尝试中得到的问题/错误消息。
  • 用例是什么?我觉得已经有很多库和框架可以处理这个问题,不需要你自己处理。 XY 问题。此外,如果您仍需要自己实现,则需要尝试代码。

标签: c# string url


【解决方案1】:

如果数字总是在同一个位置(在https://example.com/app/之后),你可以用斜杠(/)字符分割字符串并提取它:

string input = "https://example.com/app/1095600/example2234";
string result = input.Split("/")[4];

【讨论】:

    【解决方案2】:

    您可以在正则表达式的帮助下尝试匹配所需的子字符串,尤其是。如果你有详细的标准

    三位或更多位数

    代码:

    using System.Text.RegularExpressions;
    
    ...
    
    string url = "https://example.com/app/1095600/example2234";
    
    string number = Regex.Match(url, @"(?<=\/)[0-9]{3,}(?=\/|$)").Value;
    

    【讨论】:

      【解决方案3】:

      Mureinik 的答案可以正常工作,但如果您的 URL 缺少 https:// 部分,可能会很快中断。最好将字符串转换为Uri 并使用Uri.Segments 属性提取路径的第二段。

      Uri address = new Uri("https://example.com/app/1095600/example2234");
      string id = address.Segments[2].Replace("/", "");
      

      段包含结尾斜线,因此您需要手动将其删除。

      【讨论】:

      • 很高兴听到。如果它解决了您的问题,您能否接受带有复选标记的答案?如果他们有同样的问题,这将有助于其他人找到正确的解决方案。
      【解决方案4】:
      1. 识别开始和结束字符串标记。
      2. 开始 = “/app/”,结束 = “/”。
      3. 把它从那里剪掉。
      
      
          String input = "https://example.com/app/1095600/example2234";
          String str_number = input.Substring(input.IndexOf("/app/")+5).Split('/')[0];
             int int_number = Convert.ToInt32(str_number); 
      
      
      1. 始终尝试编写最简单的代码。玩得开心!

      【讨论】:

      • 虽然这并不是最简单的代码...
      • 多么有用的评论,谢谢。我发布它是为了好玩。实际上我们并不知道所有的指令,而且 URL 经常不稳定,服务器、域和文件夹也很容易发生变化。 :-)
      • 我的评论无意冒犯。你对 URL 的不确定性是正确的,这就是为什么我认为你的解决方案不好。如果“app”部分被重命名,您必须更改它并重新计算索引偏移量。维护起来并不愉快。我的解决方案使用标准的 Uri 类,它消除了复杂性。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-24
      • 2015-08-20
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多