2014-06-11 55 views
0

那裏!C#:查找日期括在括號中的字符串

我試圖找到解決工作在C#中處理字符串的工作

問題陳述

我有文字輸入作爲

W.E.Power Dividend Total Return (Net 2%) vs. S&P 500 Total Return Index (11/30/1989 - 09/30/2009)

,我需要更換日期與我的日期字符串11/05/1992-10/06/2013

當前

get_pub_data輸入文本

string year_date = get_pub_data.Split(new char[] { '(', ')' })[1];

所以我用得到括號的內容。但是,然後我在一行中遇到了多個括號,因此上面的代碼失敗了。至於,它需要遇到的第一個托架,並用日期替換支架內容,我得到下面的結果

輸出錯誤

W.E. Power Dividend Total Return (12/31/99 - 12/31/13) vs. S&P 500 Total Return Index (11/30/1989 - 09/30/2009)

而不是替換(date)它取代(Net 2%)與日期

+0

所有的日期格式? – merlin2011

+0

@ merlin2011是的,他們都是在相同的格式'日/月/年 - 月/月/年' – Incpetor

+0

聽起來像一個正則表達式會讓你擺脫你的問題...看看阿米爾的答案 – Noctis

回答

0

你會想在這裏使用正則表達式:

\(\d{2}/\d{2}/\d{4}\s-\s\d{2}/\d{2}/\d{4}\) 

這將返回你:

(11/30/1989 - 09/30/2009) 

對於只發現日期使用:

\d{2}/\d{2}/\d{4} 

它會回報你:

11/30/1989 

而且

09/30/2009 

C#代碼例子e:

string str = "W.E.Power Dividend Total Return (Net 2%) vs. S&P 500 Total Return Index (11/30/1989 - 09/30/2009)"; 
string pattern = @"\(\d{2}/\d{2}/\d{4}\s-\s\d{2}/\d{2}/\d{4}\)"; 
string replaced = Regex.Replace(str, pattern, @"(01\01\2013 - 01\01\2014)"); // W.E.Power Dividend Total Return (Net 2%) vs. S&P 500 Total Return Index (01\01\2013 - 01\01\2014) 
+0

我用正則表達式,但我可以得到它匹配的索引值嗎?我正在嘗試查找要替換的字符串的開始和結束索引。 – Incpetor

+0

我認爲你可以使用Regex.Replace() –

+0

檢查我的編輯 - 我已經添加了一個例子.. –