【问题标题】:Substring formatting to get all characters after the first underscore but before the 2nd underscore?子字符串格式以获取第一个下划线之后但第二个下划线之前的所有字符?
【发布时间】:2012-01-29 09:03:47
【问题描述】:

例如我们有这个字符串:

  • hello_my name_is_bob

只想得到字符串的“我的名字”部分,我怎么能简单地用子字符串得到这个?

此外,示例中的格式始终相同,因此我只需要检索第一个下划线之后第二个下划线之前的内容。

【问题讨论】:

    标签: c# string substring delimiter


    【解决方案1】:

    string.Split 可以做到这一点,无需进入Substring

    var parts = "hello_my name_is_bob".Split('_');
    
    string name = parts[1] // == "my name";
    

    或者,在一个衬里(虽然我觉得这不太可读):

    string name = "hello_my name_is_bob".Split('_')[1];
    

    【讨论】:

    • 好东西,起初我使用双引号,但它给了我一个例外,所以我将它改为单引号,它就像一个冠军。
    • @MDL - C# 中的双引号分隔字符串,单引号分隔字符。
    【解决方案2】:
    "hello_my name_is_bob".Split('_').Skip(1).First();
    

    【讨论】:

      【解决方案3】:

      如果您确定有两个下划线,请使用以下代码:

      var pos = str.IndexOf('_');
      var last = str.IndexOf('_', pos+1);
      var res = str.Substring(pos+1, last-pos-1);
      

      如果下划线的数量少于两个,这将失败。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-23
        • 1970-01-01
        • 1970-01-01
        • 2021-08-31
        • 1970-01-01
        • 1970-01-01
        • 2021-02-15
        • 2017-08-08
        相关资源
        最近更新 更多