在C#中的两个字符之间拆分一个字符串

时间:2012-03-17 07:32:37

标签: c# asp.net regex string split

我的字符串类型为“24; #userhere,#AWRFR \ user,#,#,#usernamehere”

我想在第一次出现在 # , 上拆分此字符串,即我希望获取一个字符串这两个角色。

因此,对于上面的字符串,我希望OUTPUT为:

usernamehere

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

4 个答案:

答案 0 :(得分:4)

简单的Regex Pattern可以完成这项工作:

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

试验:

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

答案 1 :(得分: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();

答案 2 :(得分:1)

你需要找到'#'和'的第一个索引。 ''。然后使用substring方法获取所需的修剪字符串。有关子字符串方法

的更多详细信息,请阅读this
string s = @"24;#usernamehere,#AWRFR\user,#,#,#usernamehere";
string finalString = s.Substring(s.IndexOf('#') + 1, s.IndexOf(',') - s.IndexOf('#') - 1);

答案 3 :(得分:0)

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

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