我有类型的字符串 “24;#usernamehere,#AWRFR \用户,#,#,#usernamehere”分割字符两者之间的字符串在C#
我想要分割的这个字符串第一次登场#
and ,
即ie我想要一个字符串被提取这是介于这两个字符之间。
因此,对于上面的字符串我想要的输出:
usernamehere
我怎么可以使用Regex
功能两个字符之间分割字符串?
我有类型的字符串 “24;#usernamehere,#AWRFR \用户,#,#,#usernamehere”分割字符两者之间的字符串在C#
我想要分割的这个字符串第一次登场#
and ,
即ie我想要一个字符串被提取这是介于这两个字符之间。
因此,对于上面的字符串我想要的输出:
usernamehere
我怎么可以使用Regex
功能两个字符之间分割字符串?
一个简单的正则表达式可以做的工作:
var pattern = new System.Text.RegularExpressions.Regex("#(?<name>.+?),");
测试:
string s = @"24;#usernamehere,#AWRFR\user,#,#,#usernamehere";
pattern.Match(s).Groups["name"].Value; //usernamehere
不完全是你自找的,但应该做你想要什么样的方式......
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));
您需要找到'#'&','的第一个索引。然后使用substring方法来获取您所需的修剪字符串。阅读this关于子方法的更多细节
string s = @"24;#usernamehere,#AWRFR\user,#,#,#usernamehere";
string finalString = s.Substring(s.IndexOf('#') + 1, s.IndexOf(',') - s.IndexOf('#') - 1);
使用LINQ:
var x = input.Split('#').Where(e => e.Contains(',')).Select(e => e.Split(',').First());
这是一样的:
using System.Linq;
var input = @"24;#usernamehere,#AWRFR\user,#,#,#usernamehere";
你可以用一个单一的线拆呢
var x = from e in input.Split('#')
where e.Contains(',')
select e.Split(',').First();
在这两种情况下,结果将是:
x = {"usernamehere", "AWRFR\user", "", ""}
这正是与#
和,
封闭所有子阵列。 然后如果你想第一个元素只是添加.First()
或做:
x.First();
听起来像是一份工作正则表达式... – 2012-03-17 07:40:05
你试过'String.Split()'方法吗? - http://msdn.microsoft.com/en-us/library/y7h14879.aspx – 2012-03-17 07:40:12