C# 解析字符串中以@character开头的单词
我必须编写一个程序,解析以@开头的单词的字符串,并返回带有@符号的单词 我试过这样的方法:C# 解析字符串中以@character开头的单词,c#,parsing,C#,Parsing,我必须编写一个程序,解析以@开头的单词的字符串,并返回带有@符号的单词 我试过这样的方法: char[] delim = { '@' }; string[] strArr = commenttext.Split(delim); return strArr; 但它返回数组中不带@的所有单词 我需要一些非常直截了当的东西。没有林肯喜欢的东西 如果字符串是abc@ert@xyz,那么我应该返回@ert和@xyz。如果您将单词定义为以空格分隔,那么这将起作用: string[] strArr = c
char[] delim = { '@' };
string[] strArr = commenttext.Split(delim);
return strArr;
但它返回数组中不带@的所有单词
我需要一些非常直截了当的东西。没有林肯喜欢的东西
如果字符串是abc@ert@xyz,那么我应该返回@ert和@xyz。如果您将单词定义为以空格分隔,那么这将起作用:
string[] strArr = commenttext.Split(' ')
.Where(w => w.StartsWith("@"))
.ToArray();
如果需要更复杂的东西,正则表达式可能更合适
我需要一些非常直接的东西。没有LINQ喜欢的东西>
非Linq等效物为:
var words = commenttext.Split(' ');
List<string> temp = new List<string>();
foreach(string w in words)
{
if(w.StartsWith("@"))
temp.Add(w);
}
string[] strArr = temp.ToArray();
如果您反对使用Linq,除非您被要求使用较旧的.NET版本,否则您不应该使用Linq,沿着这些思路的方法将适合您的需要
string[] words = commenttext.Split(delimiter);
for (int i = 0; i < words.Length; i++)
{
string word = words[i];
if (word.StartsWith(delimiter))
{
// save in array / list
}
}
注意:此方法至少需要System.Linq和.NET 3.5。
const string test = "@Amir abcdef @Stack @C# mnop xyz";
var splited = test.Split(' ').Where(m => m.StartsWith("@")).ToList();
foreach (var b in splited)
{
Console.WriteLine(b.Substring(1, b.Length - 1));
}
Console.ReadKey();