算法提取2个水平下降

问题描述:

嗨,大家好,我有以下字符串算法提取2个水平下降

&|L1|L2|L3|& 

我想提取L1出来,if语句把它做一些。这意味着我将不得不读取每个& &| |然后提取L1?

谢谢你的帮助!

字符串不固定>.<有时其 &|L1|A2|A3|& %3123%

+1

你总是只需要L1?或者你想要一个所有的列表? – 2012-03-22 04:29:39

+0

问题不清楚。你想要没有L1,L2,L3等结果字符串吗?或者你想要只有L1,L2,L3等字符串?水平总会出现在管道中(像这样的| L1 |)? – Dhananjay 2012-03-22 05:05:27

您可以通过一次循环每个字符或所有字符来检查。请参见下面的代码

  string Str = "&|L1|L2|L3|&"; 
      for(int i= 0;i<Str.Length;i++) 
      { 
       if (Str[i] == 'L' && Str[i+1] == '1') 
       { 
        MessageBox.Show(Str[i].ToString() + Str[i+1].ToString() + " Found"); 
       } 
      } 
+0

但我的实际字符串总是变化,L1 L2 L3的数量总是变化> TransformBinary 2012-03-22 04:50:03

+0

如果它改变了多少次,上面的代码将只从实际字符串中挑出L1字符串。尝试一次。 – 2012-03-22 04:56:11

+1

谁是血腥的,为了一个单一的理由而失败。它有什么不对? – 2012-03-22 09:30:08

如果你知道你的数据始终格式化这样,你总是希望包含在第一和第二管道字符之间的子字符串,一个简单的正则表达式将工作(这是在C#中,因为这是你用什么标记了问题):

string testString = "&|L1|L2|L3|&"; 
string match = Regex.Match(testString, @"^.+?\|(.+?)\|").Groups[1].Value; 

然后,您可以在“匹配”上执行所需的任何逻辑。正则表达式解释:匹配字符串的开始,然后匹配任何字符到第一个管道的延迟匹配,延迟匹配并捕获到下一个管道的任何字符。