我有類型的字符串 「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