簡體   English   中英

在C#中的兩個字符之間分割字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM