2017-05-10 142 views
0

我有一个包含一个列表:{"something1","something2","somefoo","bar"}如果字符串的开头等于另一个

我创建了一个foreach循环来检查每个字符串。

string input = "thing"; 
foreach(string word in list) //list = {"something1","something2","somefoo","bar"} 
{ 
    if (word.StartContains(input)) 
      return; 
} 

因此,大家可以看到,我想检查我的input字符串包含在列表中的字符串中。 我想要的结果是我不想在此代码中返回。

StartContains需要做什么?

此方法需要检查第一个字母是否等于输入, 不是像Contains()那样的整个单词。

我只是不知道如何创建这个...

感谢,

+0

你需要'word.StartsWith(输入)',只要我undestrand。 –

+0

与第一个字符相同的东西包含在起始字符而不是字符串中的任何位置。 – jdweng

+0

你的意思是你需要实现一些这样做,而不是内置?我知道其他人已经给出了使用内置方法的答案,但是从您的问题中不清楚这是您需要的全部内容还是您需要制作自己的答案。 – DigiFriend

回答

3

你可以使用String.StartsWith

确定此字符串实例的开头是否与 指定的字符串匹配。

1

使用

String.StartsWith("string") 

在你的榜样。

string input = "thing"; 
    foreach(string word in list) //list = {"something1","something2","somefoo","bar"} 
    { 
     if (word.StartsWith(input)) 
     { 
      // TODO: Do Something with the word here. 
     } 
    } 

这是一个正在运行的示例,以展示它的工作原理。 https://dotnetfiddle.net/mNVK1u

1

下面将为您创建一个与您的输入相匹配的所有条目的列表。

var input = "som"; 

    var strings = new List<string>() 
    {"something1","something2","somefoo","bar"}; 

    var stringsThatMatch = strings.Where(item => item.StartsWith(input)).ToList(); 
0

入住这

var list = new List<string>(); 
       list.Add("something1"); 
       list.Add("domething1"); 
       list.Add("romething1"); 
       list.Add("yomething1"); 
       string input = "thing"; 
       char[] inputchars = input.ToCharArray(); 
       foreach (string word in list) //list = {"something1","something2","somefoo","bar"} 
       { 
        char[] characters = word.ToCharArray(); 

        if (inputchars[0] == characters[0]) 
         list.Remove(word); 
       } 
       return list; 
0

正如其他人已经指出,String.StartsWith()是你在找什么。

但你也可以创建自己的ExtensionMethod为

public static bool StartsWith(this string baseString, string stringToFind, int lettersToMatch) 
{   
    for(int i = 0; i < lettersToMatch; i++) 
    { 
     if(baseString[i] != stringToFind[i]) 
     { 
      return false; 
     } 
    } 
    return true; 
} 

然后你可以这样调用:

bool startsWithMyName = "mynameisfelix".StartsWith("mynameisthomas", 8); // true 
startsWithMyName = "mynameisfelix".StartsWith("mynameisthomas", 10);  // false 

所以,你可以简单地ajust你想要的字母数量相匹配。

相关问题