2014-10-09 232 views
0

我有一個字符串可能看起來像這樣的:從字符串中獲取數字與正則表達式

"Lesson 2.3"

或本:

"Lesson 12.5"

有什麼辦法我只能2.312.5或其他與此字符串具有相同格式的數字?我並不是想把它變成雙精度或浮點數,我只想要字符串中包含數字的部分,即「2.3」或「12.5」。

我使用正則表達式的嘗試,但我嘗試僅返回第一個數字:

var number = Regex.Match(lessonTopicName, "\\d+").Value; // returns "2"

我沒有正則表達式的一個完整的瞭解,所以我知道我這樣做不對。我想寫一個方法,我可以傳入字符串,並以字符串格式返回字符串中的數字,如果有意義的話。

+0

整體數字匹配正則表達式是多一點比你需要的,所以也許你可以使用''\\ d +(?:\\。\\ d *)「或類似的方法...... – abiessu 2014-10-09 18:00:52

+1

如果你想保持簡單,用'\ d'和' 。:'[\\ d。] +'。讓我知道這對你是否足夠好,我會作爲答覆發佈。 – Sam 2014-10-09 18:00:54

+0

看起來像是有一個答案已經http://stackoverflow.com/questions/22232618/regular-expression-get-number-from-string – NMK 2014-10-09 18:01:35

回答

3

\d+只匹配數字。您需要相匹配的週期,以及:

var number = Regex.Match(lessonTopicName, "\\d+\\.?\\d*").Value; 

週期和後面的數字是由?成爲可選這裏(0或1)和*(0或更多)。如果您需要需要一個週期,之後小數,該版本將是:

var number = Regex.Match(lessonTopicName, "\\d+\\.\\d+").Value; 
+1

您應該將尾部'\\ d +'更改爲'\\ d *',以便它匹配'「第1課」'。 – Sam 2014-10-09 18:01:29

+0

這工作就像我需要。呃,我需要刷上RegEx,在這種情況下它似乎非常有用。非常感謝你的幫助。只要定時器啓動,我會將其標記爲答案。 – Kevin 2014-10-09 18:02:35

+0

@Sam對,完成。 – driis 2014-10-09 18:03:28

0

什麼

var number = Regex.Match(lessonTopicName, "[0-9]+.[0-9]$").Value; 
+0

這一個看起來有點太嚴格...... – abiessu 2014-10-09 18:04:29

+0

也許吧。我只是在給出的例子。 – 2014-10-09 18:05:06

+0

Hogwash。事實上,這與其他在這裏發佈的答案非常相似。 – 2014-10-09 19:02:26

0
var number = Regex.Match(lessonTopicName, @"\d+.\d+").Value; 
相關問題