2011-09-07 46 views
1

我有一個帶有客戶信息的文本,信息以不同的格式顯示,我想重新排列客戶信息,以便在解析之前所有信息看起來都一樣。C#重新排列字符串中的文本

客戶信息格式1:

ID: 1 
Name: A 
Last name: B 

客戶信息格式2:

ID: 
1 
Name: 
A 
Last name: 
B 

有沒有什麼辦法讓我重新排列信息,以便他們都看起來像例如1號?

所有幫助非常感謝。

+0

你能提供一些將被解析的字符串嗎? –

+0

價值從何而來?在嘗試重新排列它們之前,你將它們存儲在哪裏? –

回答

2

看起來你可能只需要:

text = text.Replace(": \r\n", ": "); 

這將在例如工作,你已經給了,可能已經改變爲「\ r \ n」來「\ n」根據確切格式。

+0

詛咒你喬恩,打我吧! :) – rie819

+0

@Lars:好吧,如果你能給出更多的細節比「這給出錯誤」和你的問題的一個例子,我可能會。不過,如果我的答案或保羅的答案已經回答了*這個問題的原始點,那麼可能值得開始一個新問題。 –

+0

@Jon Skeet - 問題已解決。 Thnks再次爲答案 – Lars

0

對於任何類型的格式編寫單一通用代碼都很困難。然後,你可以用一個方法Format(...)編寫一個接口,併爲每種格式創建一個類,然後相應地實例化類的對象。

1

這是一個更靈活一點的是,簡單的更換「:\ r \ n」,但它並不能真正永遠是完美的

Regex.Replace(input,@"(:\s*)\n([^:]*$)","$1$2",RegexOptions.Multiline); 

它找到一個:後跟0個或多個空白字符,然後是一個換行符,然後是一個不包含冒號的行,並在這種情況下刪除換行符。在喬恩的答案唯一的好處是,它會隨着空值工作,即:

ID: 
1 
Name: 
A 
Middle Name: 
Last name: 
B 

成爲

ID: 1 
Name: A 
Middle Name: 
Last name: B 

這是確定如果那是必須的,但很多更復雜,如果沒有!

+0

感謝您的答案,它的效果很好。 – Lars