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

C# 在C中查找具有特定字符串部分的固定长度字符串,c#,.net,string,linq,C#,.net,String,Linq,我想找到一个具有特定子字符串的固定长度字符串。但我需要像在SQL查询中那样做 例如: 我有像- AB012345 AB12345 AB123456 AB1234567 AB98765 AB987654 我想选择先有AB,然后有6个字符的字符串。这可以在SQL中通过从[table_name]中选择*来完成,其中[column_name]像'AB'一样在AB后面加下划线 因此,结果将是: AB012345 AB123456 AB987654 我需要知道是否有任何方法可以用C来选择字符串,考虑到您

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

例如: 我有像-

AB012345
AB12345
AB123456
AB1234567
AB98765
AB987654
我想选择先有AB,然后有6个字符的字符串。这可以在SQL中通过从[table_name]中选择*来完成,其中[column_name]像'AB'一样在AB后面加下划线

因此,结果将是:

AB012345
AB123456
AB987654

我需要知道是否有任何方法可以用C来选择字符串,考虑到您有一个字符串数组,可以使用AB.

string[] str = new string[3]{"AB012345", "A12345", "AB98765"};
var result = str.Where(x => x.StartsWith("AB") && x.Length == 8).ToList();
逻辑是从AB开始,长度为8。这是你最好的比赛

这应该可以

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();
first x.Length==8确定长度,x.STARTSWITSAB确定字符串开头所需的字符,可用于过滤结果:

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

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

这可以通过使用string.Startwith和string.Length函数实现,如下所示:

public bool CheckStringValid (String input)
{
  if (input.StartWith ("AB") && input.Length == 8)
  {
     return true;
   }
  else
  {
     return false;
  }
}
如果字符串符合您的条件,则返回true


希望这有帮助。

Uhm..使用正则表达式?刚出现的Regex@AB.{6} $匹配AB和其后的任何6个字符,直到行尾。@cubrr,您能作为答案发布吗?我会用你的方式,接受@MaciejLos的回答。将\d更改为。在他的Regexp中匹配AB后面的任何字符,而不是任何数字。我想知道是否有任何方法可以使用AB __________________?这一个也很好,因为它以AB开头,结尾有6个字符。我不确定我是否理解你排除它的意思。如果像CONTANSAB这样的事情能做的更好。比如,如果我可以使用ContainsAB\uuuuuuuuuuuuuuuuuuuuuuuuuu进行选择。实际上,Contains与字符串匹配,您不能使用类似的内容。它会匹配的。如果你想创建一个掩码,或者更通用的东西,那么正则表达式将是你最好的选择。那么我想我必须切换到正则表达式。谢谢你的解决方案。
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());
}