C#重新排列字符串中的文本

时间:2011-09-07 16:59:15

标签: c# regex parsing

我有一个包含客户信息的文本,信息格式不同,我想重新安排客户信息,以便在解析之前所有信息都一样。

客户信息格式1:

ID: 1
Name: A
Last name: B

客户信息格式2:

ID: 
1
Name: 
A
Last name: 
B

有没有办法让我重新排列信息,所以它们看起来都像示例号1?

非常感谢所有帮助。

3 个答案:

答案 0 :(得分:2)

看起来你可能只需要:

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

这适用于您给出的示例,可能已将“\ r \ n”更改为“\ n”,具体取决于具体格式。

答案 1 :(得分:1)

这更简单地替换了“:\ r \ n”,但它实际上并不是完美的

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

它找到一个:后面跟着0个或更多的空格字符,后面跟一个换行符,后跟一个不包含冒号的行,并在这种情况下删除换行符。与Jon的答案相比,唯一的优势是它可以使用空值,即:

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

变为

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

如果这是一项要求,那就没关系,但如果没有,那就更复杂了!

答案 2 :(得分:0)

为任何类型的格式编写单个通用代码是很困难的。

但是,您可以编写一个带有格式(...)的方法的接口,并为每种格式创建一个类,然后相应地实例化类的对象。