当中间出现更多时,在两个长度为10的字符串之间获取字符串

时间:2016-10-28 07:34:06

标签: c#

我希望10 ... <之间的长度为>的子字符串,例如。

  

发票编号:&lt; 12345sd)&lt; 1234567890 &gt;

请注意,该字符串可以包含许多 <符号,这就是为什么一个简单的IndexOf + Substring 不是解决方案

1 个答案:

答案 0 :(得分:0)

尝试使用正则表达式

  String source = "Invoice No:< 12345sd ) <1234567890>";

  // {10}    10 characters exactly 
  // {10,}   10 characters or more
  // {,10}   10 characters or few
  // {5,10}  from 5 up to 10 characters 
  var matches = Regex
    .Matches(source, @"<([^<]{10})>") 
    .OfType<Match>()
    .Select(match => match.Groups[1].Value)
    .ToArray(); // Or FirstOrDefault(); if you want just 1st match

测试

  // 1234567890
  Console.Write(string.Join(", ", matches));