1

我在 C# 中工作,我有 2 个文本框。如果用户在第一个框中输入文本并按下按钮,则文本复制到文本框 2 中。我现在制作了另一个文本框,如果用户输入了它们,我希望它显示所有包含 @ 的字符串。
例如,
用户输入“嗨@joey,我和@Kat 和@Max 在一起”
按下按钮
“嗨@joey,我和@Kat 和@Max 在一起”出现在文本框2
@joey @Kat @Max出现在文本框 3 中。

只是不确定我会如何做最后一部分。
任何帮助谢谢!..................................................... ............................. 好的,所以我决定去并尝试学习如何做到这一点,到目前为止我已经掌握了

string s = inputBx.Text;
             int i = s.IndexOf('@');

            string f = s.Substring(i);
            usernameBx.Text = (f);

这可行,但是它会在带有@符号的单词之后打印所有单词。因此,如果我输入“嗨,@joey,你对@kat 做了什么”,它会打印出@joey 你对@kat 所做的事情,而不仅仅是@joey 和@kat。

4

6 回答 6

3

我会将字符串拆分为一个数组,然后使用string.contains获取包含 @ 符号的项目。

于 2012-04-17T10:59:13.637 回答
2

一个简单的正则表达式来查找以开头的单词就@足够了:

string myString = "Hi there @joey, i'm with @Kat and @Max";
MatchCollection myWords = Regex.Matches(myString, @"\B@\w+");
List<string> myNames = new List<string>();

foreach(Match match in myWords) {
    myNames.add(match.Value);
}
于 2012-04-17T11:13:27.750 回答
0
var indexOfRequiredText = this.textBox.Text.IndexOf("@");

if(indexOfRequiredText > -1)
{
    // It contains the text you want
}
于 2012-04-17T10:59:09.407 回答
0

您可以使用正则表达式来查找您搜索的单词。

试试这个正则表达式

@\w+
于 2012-04-17T10:59:39.250 回答
0

也许不是最整洁的灵魂。但是这样的事情:

string str="Hi there @joey, i'm with @Kat and @Max";
var outout= string.Join(" ", str
               .Split(' ')
               .Where (s =>s.StartsWith("@"))
               .Select (s =>s.Replace(',',' ').Trim()
            ));
于 2012-04-17T11:03:41.453 回答
0

正则表达式在这里可以很好地工作:

var names = Regex.Matches ( "Hi there @joey, i'm with @Kat and @Max", @"@\w+" );

foreach ( Match name in names )
    textBox3.Text += name.Value;
于 2012-04-17T11:05:00.400 回答