C# 使用Indexof检查字符串是否包含字符

C# 使用Indexof检查字符串是否包含字符,c#,printing,contains,indexof,C#,Printing,Contains,Indexof,我要做的是在框1中键入随机单词,单击一个按钮,然后在框2中打印所有以D开头的单词。所以,如果我要输入胡萝卜、门、苹果、办公桌、狗、地毯之类的东西,然后单击框2中的“门、办公桌、狗”按钮 string s = box1.Text; int i = s.IndexOf("D"); string e = s.Substring(i); box2.Text = (e); 当我用这个的时候^^ 它将打印出门、苹果、桌子、狗、地毯,而不仅仅是

我要做的是在框1中键入随机单词,单击一个按钮,然后在框2中打印所有以D开头的单词。所以,如果我要输入胡萝卜、门、苹果、办公桌、狗、地毯之类的东西,然后单击框2中的“门、办公桌、狗”按钮

    string s = box1.Text;                
    int i = s.IndexOf("D");
    string e = s.Substring(i);
    box2.Text = (e);
当我用这个的时候^^ 它将打印出门、苹果、桌子、狗、地毯,而不仅仅是D。 注意:这些词就是一个例子,我可以在方框1中键入任何内容


有什么帮助吗

您可以通过使用LINQ简化此过程

var allDWords = box1.Text.Split(' ').Where(w => w.StartsWith("D"));
box2.Text = String.Join(" ", allDWords);
您可以将D字与正则表达式匹配,并对结果进行迭代

试试这个正则表达式

D\w+

首先,你需要将文本拆分成几个单词,然后检查每个单词是否以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();
试试这个

box2.Text = String.Join(" ", 
                box1.Text.Split(' ')
                         .Where(p => p.StartsWith("D")));

你可以做的一件事是:

让我们假设

 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);

希望这有帮助。

不,这不是家庭作业,这是我试图学习的。当这仍然是一个学术项目时,它的目的是教你,而不是解决一个问题,从我们的角度来看,这几乎是一样的。好吧,关于更多的空间呢?这是给迪斯首府的吗?是给D首府的。蒂姆·施梅尔特的帖子解决了这一问题——为什么?是托卡瑞而不是“完美伴侣”。有没有可能解释一下它是如何工作的?@user1300788:它取初始字符串并将其拆分为单词空格是分隔符;从这个列表中,它只需要以D开头的单词,最后使用空格作为分隔符将列表项连接到一个字符串中。这正好符合我不再要求的内容,也是我写得更慢的内容+1。不处理其他空格分隔符或小写字母,但这不是要求的。非常感谢。我同意,非常简单,没有不必要的+1