2014-01-08 247 views
0

如何檢查字符串中是否包含以下字符「RM」,後跟任意數字或特殊字符( - ,_ etc),然後是「T」?檢查字符串中是否包含字符和數字

例:thisIsaString ABRM21TC =是,包含 「RM」 之後是編號,接着 「T」

例:thisIsaNotherString RM-T = yes時,包含 「RM」 之後是特殊字符,然後接着「T」

+2

你可能會使用一個正則表達式。或者,您可以手動檢查每個字符。 – crush

+0

正則表達式 – Mutant

+0

@RaphaëlAlthaus這並不完全符合標準,但接近。再讀一遍。 – crush

回答

2

試試這個正則表達式。

[^RM]*RM[^RMT]+T[^RMT]* 

這裏是一個示例程序。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Text.RegularExpressions; 

namespace ConsoleApplication12 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      String rg = "[^RM]*RM[^RMT]+T[^RMT]*"; 
      string input = "111RM----T222"; 

      Match match = Regex.Match(input, rg, RegexOptions.IgnoreCase); 

      Console.WriteLine(match.Success); 
     } 

    } 

} 
4

你想要檢查使用正則表達式(正則表達式)的字符串。看到這個MSDN上的信息就如何做到這一點

http://msdn.microsoft.com/en-us/library/ms228595.aspx

+0

沒有投票權,但我希望至少看到一個樣本表達式,因爲鏈接有過時的糟糕習慣。 –

2

你可以用一個簡單的正則表達式做到這一點:

var match = Regex.Match(s, "RM([^T]+)T"); 
  • 檢查模式存在通過調用match.Success
  • 通過致電match.Groups[1]獲取捕獲的值。

這裏是一個演示(上ideone:link):

foreach (var s in new[] {"ABRM21TC", "RM-T", "RxM-T", "ABR21TC"}) { 
    var match = Regex.Match(s, "RM([^T]+)T"); 
    Console.WriteLine("'{0}' - {1} (Captures '{2}')", s, match.Success, match.Groups[1]); 
} 

它打印

'ABRM21TC' - True (Captures '21') 
'RM-T' - True (Captures '-') 
'RxM-T' - False (Captures '') 
'ABR21TC' - False (Captures '') 
相關問題