2011-07-12 44 views
1

我需要驗證一個字符串是否以下列格式 {X:Y}或{X,Y,...,Z}其中x,y和z是整數或雙打。 我想我要麼需要一個reg-ex和/或解釋器。 有誰知道如何去做這件事? 也建議這樣做的圖書館將深受讚賞。正則表達式或解釋器來解釋的整數/雙範圍輸入

第二步應該有一個解釋器來解釋這樣的表達式: 0.5 * {0.4,0.6,0.7} - > {0.2,0.3,0.35}。我意識到最佳的方法是爲解釋器可以使用的語法定義一個語法。

感謝, 乙

+1

什麼樣的雙符號的,我們談論的?只有1.2或財產以後像1.2E-10 –

+0

是的,只有1.2一種都會好起來 – Bogdan

回答

2

鑑於有一個101種不同的雙格式和Double.TryParse()被內置到.NET框架。

我會使用一個正則表達式或只是string.split得到的字符串數組包含您的「X,Y,Z」值,然後調用Double.TryParse上的每個值。

當你有兩個可能的格式,我會首先檢查如果輸入的字符串包含「:」再有獨立的代碼,以分割每種格式,從而使代碼更容易理解。

+0

這是個好主意,謝謝!我想盡可能地利用.net內置函數。我只是想知道是否存在這樣做的開源庫。 – Bogdan

0

我不是在正則表達式大自己,但我使用這個我讓他們來源:http://www.regexlib.com/它也包括在該網站上小抄和正則表達式測試,因此您可以創建他們自己很容易。

希望這會有所幫助!

0

如果你想查詢這兩種類型的一次更改正則表達式來首先選擇

\{[0-9]+(\.[0-9]+)?:[0-9]+(\.[0-9]+)?\} 

\{[0-9]+(\.[0-9]+)?(,[0-9]+(\.[0-9]+)?)+\} 

使用

var text = "{1.4,65,2.56}"; 
Regex regex = new Regex("\{[0-9]+(\.[0-9]+)?(,[0-9]+(\.[0-9]+)?)+\}"); 
if(regex.IsMatch(text)) 
{ 
    //string matches your criteria 
} 

\{([0-9]+(\.[0-9]+)?:[0-9]+(\.[0-9]+)?)|([0-9]+(\.[0-9]+)?(,[0-9]+(\.[0-9]+)?)+)\}