【问题标题】:Split a string in between two characters in C#在C#中的两个字符之间分割一个字符串
【发布时间】:2012-03-17 07:32:37
【问题描述】:

我有一个 "24;#usernamehere,#AWRFR\user,#,#,#usernamehere"

类型的字符串

我想在 #, 的第一次出现时拆分此字符串,即我希望获取一个介于这两个字符之间的字符串。

所以对于上面的字符串,我希望输出为:

usernamehere

如何使用Regex 函数在两个字符之间拆分字符串?

【问题讨论】:

标签: c# asp.net regex string split


【解决方案1】:

一个简单的正则表达式模式就可以完成这项工作:

var pattern = new System.Text.RegularExpressions.Regex("#(?<name>.+?),");

测试:

string s = @"24;#usernamehere,#AWRFR\user,#,#,#usernamehere";
pattern.Match(s).Groups["name"].Value;   //usernamehere

【讨论】:

    【解决方案2】:

    使用 Linq:

    using System.Linq;
    var input = @"24;#usernamehere,#AWRFR\user,#,#,#usernamehere";
    

    你可以用一行来分割它:

    var x = input.Split('#').Where(e => e.Contains(',')).Select(e => e.Split(',').First());
    

    等同于:

    var x = from e in input.Split('#') 
            where e.Contains(',') 
            select e.Split(',').First();
    

    在这两种情况下,结果都是:

    x = {"usernamehere", "AWRFR\user", "", ""}
    

    这正是一个所有子字符串都由#, 包围的数组。 然后,如果您想要第一个元素,只需添加 .First() 或执行以下操作:

    x.First();
    

    【讨论】:

      【解决方案3】:

      你需要找到'#'和','的第一个索引。然后使用 substring 方法获取所需的修剪字符串。阅读this 了解有关子字符串方法的更多详细信息

      string s = @"24;#usernamehere,#AWRFR\user,#,#,#usernamehere";
      string finalString = s.Substring(s.IndexOf('#') + 1, s.IndexOf(',') - s.IndexOf('#') - 1);
      

      【讨论】:

        【解决方案4】:

        不完全是你要求的方式,但应该做你想做的......

        string input = @"24;#usernamehere,#AWRFR\user,#,#,#usernamehere";
        string username = input.Substring(input.LastIndexOf("#") + 1);
        

        如果你愿意,你可以得到第一个 # 和 , 的位置

        int hashPosition = input.IndexOf("#") + 1;
        int commaPosition = input.IndexOf(",");
        
        string username = input.Substring(hashPosition, commaPosition - hashPosition));
        

        【讨论】:

          猜你喜欢
          • 2022-09-28
          • 2018-07-30
          • 2015-10-18
          • 1970-01-01
          • 2020-06-03
          • 2015-04-13
          • 2023-04-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多