2017-08-08 98 views
0

我試圖檢查一個字符串(textBox1.Text)中有2個破折號(例如XXXXX-XXXXX-XXXXX)。如果不學習像Regex這樣的全新方法,我很難找出最好的方法來做到這一點。如何檢查一個字符串中有2個破折號?

現在我有:

else if (!textBox1.Text.Contains("-")) 
     { 
      label3.Text = "Incorrect"; 
     } 

1個破折號然而,這僅僅檢查。

基本上,我將如何有一個if語句檢查字符串textBox1.Text是否恰好有2個破折號?

回答

0

您可以檢查破折號的計數與字符串:

if str.Count(x => x == '-') != 2 { ... } 

這基本上意味着「數項的字符串中(字符)的數量時說,產品等於幾許」。檢查它與兩個將允許您檢測您的輸入字符串的有效性或其他。


如果高達學習正則表達式,這是一個很好的地方一樣開始。你可以檢查特定模式的東西,如:

using System; 
using System.Text.RegularExpressions; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string str = "XXXXX-XXXXX-XXXXX"; 
      Regex re = new Regex(@"^[^-]*-[^-]*-[^-]*$"); 
      Console.Out.WriteLine(re.Match(str).Success); 
     } 
    } 
} 

現在正則表達式可以複雜,但它是比較簡單的:

^  Start anchor. 
[^-]* Zero or more of any non-dash characters. 
-  Dash character. 
[^-]* Zero or more of any non-dash characters. 
-  Dash character. 
[^-]* Zero or more of any non-dash characters. 
$  End anchor. 
+0

這是唯一一個似乎工作,謝謝! – XantiuM

2

可以使用Count方法

string input = "XXXXX-XXXXX-XXXXX"; 

var dashCounter = input.Count(x => x == '-'); 

然後

if(dashCounter == 2) { } 
+1

呃....你確定嗎?我得到0 ... – john

+1

'string code = textBox1.Text; var dashCounter = code.TakeWhile(x => x ==' - ')。Count();'then'else if(dashCounter == 2){。 ..}似乎不起作用。 – XantiuM

+0

計數法就夠了! –

2

正則表達式是不是真的那麼複雜,這是值得我們學習。

下面是一個簡單的使用LINQ的解決方案。

int dashCount = textbox1.Text.Count(t=>t =='-'); 

使用TakeWhile作爲另一個建議這裏只會顯示你的引導破折號。例如,要獲得2,您需要一個字符串,如--XX-XX(注意,非前導破折號也不會被統計)。

相關問題