我有一个非常大的字符串,有很多用户名。我想从字符串中提取名称。这意味着我有一个大字符串,里面有很多名字。最后,我想要一个字符串数组中的每个用户名。
字符串示例:
blablablabla@User;\u0004User\username,blablablablablablablabla@User;\u0004User\anotherusername,@Viewblablablablablablablabla
u0004User\
,
伪代码:
string [] array = new string []{};
int i = 0;
foreach (var c in bigdata)
{
if(c == "u0004User\")
{
array[i] = c.AllCharactersUntil(',');
i++;
//AllCharactersUntil is a pseudo function
}
}
答案 0 :(得分:2)
您可以使用string.IndexOf
查找" u0004User \"的索引。然后再次找到以下逗号。然后使用string.Substring
获取名称。跟踪当前索引并使用它来告诉IndexOf
从哪里开始搜索。
string bigdata =
@"blablablabla@User;\u0004User\username,blablablablablablablabla@User;\u0004User\anotherusername,@Viewblablablablablablablabla";
string searchValue = @"u0004User\";
int index = 0;
List<string> names = new List<string>();
while (index < bigdata.Length)
{
index = bigdata.IndexOf(searchValue, index);
if (index == -1) break;
int start = index + searchValue.Length;
int end = bigdata.IndexOf(',', start);
if (end == -1) break;
names.Add(bigdata.Substring(start, end - start));
index = end + 1;
}
Console.WriteLine(string.Join(", ", names));
这将为您提供以下输出
用户名,另一个用户名
注意
我认为&#34; \ u0004&#34;值是那6个字符而不是单个unicode字符。如果它是unicode字符,那么您需要进行以下更改
string searchValue = "\u0004User\\";
答案 1 :(得分:1)
这是一个简单的结果:
string input = "blablablabla@User;\\u0004User\username,blablablablablablablabla@User;\\u0004User\anotherusername,@Viewblablablablablablablabla";
List<string> userNames = new List<string>();
foreach (Match match in Regex.Matches(input, @"(u0004User\\)(.*?),", RegexOptions.IgnoreCase))
{
string currentUserName = match.Groups[2].ToString();
userNames.Add(currentUserName); // Add UserName to List
}