我必须编写一个程序来解析以'@'开头的单词的字符串,然后将这些单词与@符号一起返回。
我尝试过类似的事情:
char[] delim = { '@' };
string[] strArr = commenttext.Split(delim);
return strArr;
但它会返回数组中没有'@'的所有单词。
我需要一些非常直接的东西。没有LINQ喜欢的东西
如果字符串是“abc @ert @xyz”,那么我应该回到@ert和@xyz。
答案 0 :(得分:3)
如果你定义" word" as"由空格隔开"那会有用:
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();
答案 1 :(得分:0)
如果您反对使用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
}
}
答案 2 :(得分:0)
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();