我的字符串类型为“24; #userhere,#AWRFR \ user,#,#,#usernamehere”
我想在第一次出现在 #
和 ,
上拆分此字符串,即我希望获取一个字符串这两个角色。
因此,对于上面的字符串,我希望OUTPUT为:
usernamehere
如何使用Regex
函数在两个字符之间拆分字符串?
答案 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方法获取所需的修剪字符串。有关子字符串方法
的更多详细信息,请阅读thisstring 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));