检查字符串是否以列表项值开头

时间:2019-02-01 08:05:25

标签: c# string list

我的C#代码需要帮助。

我有一个仅包含2个字符字符串的列表。

prefixes.AddRange(new string[] { "oO", "c0", "c1" }); //和其他

我要检查用户输入的值是否以此项目开头(该值是通过文本框输入的)吗?

例如,我想要的结果是验证我的用户是否输入“ 123456789”(不是以列表中的某一项开头),然后在“ 000123456789”之前自动添加“ 000”。

我想我可以用LinQ做到这一点,但是我想知道如何做到这一点。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

对于每个前缀,您需要检查usersText是否以其开头。下面的代码将对其进行检查,并在您的usersText中添加“ 000”。

if(!prefixes.Any(p => usersText.StartsWith(p))
{
    usersText = "000" + usersText;
}

答案 1 :(得分:1)

@piotr所说的话,但是我可能会用一种方法隐藏丑陋的地方。 假设前缀是全局的,则可以执行以下操作:

public string GetPrefix(string s) {
      return prefixes.Any(p => s.StartsWith(p))
           ? "" : "000"
}

,然后使用它。 或者,如果您愿意,甚至可以将其作为对字符串的扩展方法...

public static string GetPrefixForString(this string[] prefixes, string s) {
      return prefixes.Any(p => s.StartsWith(p))
           ? "" : "000"
}

// Usage: 
var foo = prefixes.GetPrefixForString(bar);