2014-03-06 24 views
1

我有以下字符串:使用正則表達式來得到串號,但沒有得到預期的結果

string OnClick = "TxtLinkAction(18294,18298)"

我使用下面的代碼行從字符串得到的數字:

var numbers = Regex.Split(OnClick, @"\D+");

我期待得到兩個結果:

numbers[0] = "18294" 
numbers[1] = "18298" 

但是,我得到下面的結果,而不是:

numbers[0] = "" 
numbers[1] = "18294" 
numbers[2] = "18298" 
numbers[3] = "" 

所以,我想知道,爲什麼我會收到四個結果?我究竟做錯了什麼?

+0

如果您的分隔符總是逗號,請使用[string.Split](http://msdn.microsoft.com/en-us/library/b873y76a(v = vs.110).aspx),因爲它應該更快在我看來它更具可讀性。 –

+1

@Jasd他想要提取文本中的數字。在這種情況下使用'String.Split'會非常麻煩。請注意,這不僅僅是由逗號分隔的兩個數字。在我看來,'Regex'在這種情況下更好。 – julealgon

+0

啊,我完全跳過了'OnClick'真正包含的內容,我的不好。 –

回答

4

我想你想要Regex.Matches http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.matches%28v=vs.110%29.aspx而不是Regex.Split。

編輯: 您還想將\ D更改爲\ d。 「\ D」匹配任何非數字。

+0

我試過使用Regex.Matches,並且返回的集合有三個條目'numbers [0] =「TxtLinkAction(」','numbers [1] =「,」'和'numbers [2] =「)」'。 – Kevin

+0

工作!我使用了'RegEx.Matches'和小寫''d「'。非常感謝! – Kevin

相關問題