在C#中查找具有特定字符串部分的固定长度字符串

时间:2015-06-18 05:43:24

标签: c# .net string linq

我想找到一个具有特定子串的固定长度的字符串。但我需要像在SQL查询中那样做。

实施例: 我有像 -

这样的字符串
AB012345
AB12345
AB123456
AB1234567
AB98765
AB987654

我想选择最初有AB字符串且之后有6个字符的字符串。这可以通过SELECT * FROM [table_name] WHERE [column_name] LIKE 'AB______'在SQL中完成(AB之后的6个下划线)。

结果将是:

AB012345
AB123456
AB987654

我需要知道是否有任何方法可以使用AB______以C#方式选择字符串。

5 个答案:

答案 0 :(得分:3)

考虑到你有一个字符串数组:

string[] str = new string[3]{"AB012345", "A12345", "AB98765"};
var result = str.Where(x => x.StartsWith("AB") && x.Length == 8).ToList();

逻辑是,如果它以AB开头,其长度为8.这是你最好的匹配。

答案 1 :(得分:3)

您可以使用Regular Expressions过滤结果:

List<string> sList = new List<string>(){"AB012345",
            "AB12345",
            "AB123456",
            "AB1234567",
            "AB98765",
            "AB987654"};

var qry = sList.Where(s=>Regex.Match(s, @"^AB\d{6}$").Success);

答案 2 :(得分:2)

这应该做到

List<string> sList = new List<string>(){
    "AB012345",
    "AB12345",
    "AB123456",
    "AB1234567",
    "AB98765",
    "AB987654"};

List<string> sREsult = sList.Where(x => x.Length == 8 && x.StartsWith("AB")).ToList();

首先x.Length == 8确定长度,x.StartsWith("AB")确定字符串开头所需的字符

答案 3 :(得分:1)

这可以通过使用string.Startwith和string.Length函数来实现:

public bool CheckStringValid (String input)
{
  if (input.StartWith ("AB") && input.Length == 8)
  {
     return true;
   }
  else
  {
     return false;
  }
}

如果字符串符合您的条件,则返回true。

希望这有帮助。

答案 4 :(得分:1)

var strlist = new List<string>()
{
    "AB012345",
    "AB12345",
    "AB123456",
    "AB1234567",
    "AB98765",
    "AB987654"
};
var result = strlist.Where( 
    s => (s.StartsWith("AB") &&(s.Length == 8))
    ); 
foreach(var v in result)
{
    Console.WriteLine(v.ToString());
}