2014-04-01 54 views
2

我閱讀格式的日期字符串2月01日,2012年我從第一炭循環計數從第16到獲取日期字符串,併發送解析​​提取得到的日期時間值。閱讀的日期字符串(2012年2月1日)從PDF文檔C#

既然月份名稱將是不同的,然後像四月長度不等於十二月長度,所以我沒有得到確切值發送給parseextract。

for (int i = 1; i <= 16; i++) 
     { 
     // read each character 
     } 

如果我把2012年4月1日並運行上面的代碼,那麼我會在第16個字符後得到額外的字符。

有什麼辦法來實現上面的邏輯?

回答

0

你可以下一個字符用,比較,你知道,這是5個字符,後:

var i = 0; 
while (true) 
{ 
    // read each character 
    var c = nextChar[i]; 

    if(c == ',') 
    { 
     // read exactly five more chars 

     break; // exit infinite loop 
    } 

    i++; 
} 
+0

當循環迭代,然後我中C ==收到錯誤下一次「」。它說,指數走出束縛錯誤 – user3477335

+0

的我想它out..Its工作now..Thanks! – user3477335

1

你可以使用正則表達式來做到這一點:如果你想

void Main() 
{ 
    var regex = new Regex(@"(January|February|March|April|May|June|July|August|September|October|November|December) \d{2}, \d{4}"); 
    string test1 = "Lorem Ipsum February 01, 2012"; 
    string test2 = "Lorem Ipsum Badmonth 01, 2012"; 
    regex.Match(test1).Dump(); 
    regex.Match(test2).Dump(); 
} 

搜索爲不區分大小寫(將於2月或2月使用)替換爲:

var regex = new Regex(@"(January|February|March|April|May|June|July|August|September|October|November|December) \d{2}, \d{4}", RegexOptions.IgnoreCase); 

或(他們究竟做同樣的事情)

var regex = new Regex(@"(?i)(January|February|March|April|May|June|July|August|September|October|November|December) \d{2}, \d{4}"); 

enter image description here

+0

+1的使用正則表達式,並會給予額外+1使用Linqpad如果我能給予額外+1。 – pstrjds

相關問題