0

我要做的是在box1中输入随机单词,单击一个按钮,然后在box2中打印所有以“D”开头的单词。因此,如果我输入“Carrots Doors Apples Desks Dogs Carpet”之类的内容并单击“Doors Desks Dogs”按钮,则会在 box2 中打印。

    string s = box1.Text;                
    int i = s.IndexOf("D");
    string e = s.Substring(i);
    box2.Text = (e);

当我使用这个^^时
,它会打印出“Doors Apples Desks Dogs Carpet”而不仅仅是D。
注意:这些词是一个例子,我可以在 box1 中输入任何内容。

有什么帮助吗?

4

5 回答 5

5

您可以通过使用 LINQ 来简化它

var allDWords = box1.Text.Split(' ').Where(w => w.StartsWith("D"));
box2.Text = String.Join(" ", allDWords);
于 2012-04-17T14:09:13.620 回答
2

尝试这个

box2.Text = String.Join(" ", 
                box1.Text.Split(' ')
                         .Where(p => p.StartsWith("D")));
于 2012-04-17T14:10:32.963 回答
0

您可以使用正则表达式匹配D单词并遍历结果

试试这个正则表达式

D\w+
于 2012-04-17T14:09:32.700 回答
0

首先,您需要将文本拆分为单词,然后检查每个单词是否以D. 在寻找第一个字符时,直接检查它更容易。

string s = box1.Text;  
StringBuilder builder = new StringBuilder();
foreach (var cur in s.Split(new char[] { ' ' })) {
  if (cur.Length > 0 && cur[0] == 'D') {
    builder.Append(cur);
    builder.Append(' ');
  }
}
box2.Text = builder.ToString();
于 2012-04-17T14:10:17.727 回答
0

你可以做的一件事是:

让我们假设,

 string str = "Dog Cat Man etc";
            string[] words = str.Split(' ');

            List<string> wordStartWithD = new List<string>();

            foreach (string strTemp in words)
                if (strTemp.StartsWith("D"))
                    wordStartWithD.Add(strTemp);

希望这有帮助。

于 2012-04-17T14:13:26.283 回答