[英]Split a string in between two characters in C#
我有一个字符串,类型为“ 24;#usernamehere,#AWRFR \\ user,#,#,#usernamehere”
我想在#
和上的第一次出现时拆分该字符串,
即我希望获取介于这两个字符之间的字符串。
所以对于上面的字符串,我希望输出为:
usernamehere
如何使用Regex
函数在两个字符之间分割字符串?
一个简单的Regex模式可以完成此任务:
var pattern = new System.Text.RegularExpressions.Regex("#(?<name>.+?),");
测试:
string s = @"24;#usernamehere,#AWRFR\user,#,#,#usernamehere";
pattern.Match(s).Groups["name"].Value; //usernamehere
使用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();
您需要找到“#”和“,”的第一个索引。 然后使用substring方法获取所需的修剪字符串。 阅读此内容以获得有关子字符串方法的更多详细信息
string s = @"24;#usernamehere,#AWRFR\user,#,#,#usernamehere";
string finalString = s.Substring(s.IndexOf('#') + 1, s.IndexOf(',') - s.IndexOf('#') - 1);
并非完全按照您的要求,而是应该按照您的意愿进行...
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));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.