2012-03-18 59 views
1

我想我應該使用正則表達式,但我仍然對我的頭很多(和我發現的唯一類似的問題不完全是我的情況),所以我決定尋求幫助。這是輸入和預期輸出:如何用「 - 」替換「 - 」僅當它沒有前面加「e」?

 
Input: "c-0.68219,-0.0478 -1.01455-0.0441 0.9e-4,0.43212" 
Output: "c -0.68219,-0.0478 -1.01455 -0.0441 0.9e-4,0.43212" 

基本上我需要使用逗號或空格作爲值分隔符,但我不能破指數指數(e‑4)。也許做兩次連續的替換?

回答

2

已有一段時間,對我來說,你應該能夠使用這樣的事情:

Regex rx = new Regex(@"([^e\s])-(\d)"); 
rx.Replace(input, "$1 -$2"); 

編輯:這會在前面加一個空格,即使有一個逗號。任何理由不這樣做?

+0

好極了!第一次嘗試,即使在像「0.0661-10e-4」這樣的邊緣情況下也是如此。 leoinfo的回答也是正確的,你只是打了幾分鐘。我不僅非常感謝(你救了我的一天!),而且還非常感謝你們的速度。所有大拇指! :) – MaDDoX 2012-03-18 18:54:42

+0

沒有需要任何大拇指起來。我們需要的只是你的食指點擊答案旁邊的勾號將其標記爲正確的答案.... – 2012-03-19 01:55:46

+0

@HaLaBi我試過了,但它一開始並沒有工作,現在就完成了。無論如何,我發現代碼有點缺點,像「1.4-4-1.9」不會正確解析(第二個連字符不會分裂),所​​以我必須運行正則表達式兩次。不知道是否有更好的方法。另外,簡單地分割任何兩位數似乎可以完成這項工作,就像這樣:'\t \t Regex rx = new Regex(@「([\ d]) - (\ d)」,RegexOptions.IgnoreCase); \t \t coords = rx.Replace(coords,「$ 1 - $ 2」); \t \t coords = rx.Replace(coords,「$ 1 - $ 2」);' – MaDDoX 2012-03-23 20:30:09

0

您可以使用下面也

ResultString = Regex.Replace(MyString, "([^0-9,e,., ,e-])", "$1 ", 
     RegexOptions.IgnoreCase); 
相關問題