2013-03-26 164 views
1

我正在运行一个类,其任务是通过html文档解析以获取一些信息。删除字符串中的字符

在我的条件一个我最终这个字符串:

"\r\n       First Name:" 

我想格式化字符串,这样我只用了“名”,所以我这样做:

string firstName = node.InnerText; 

firstName = firstName.Replace(" ", ""); 
firstName = firstName.Replace("\\r", ""); 
firstName = firstName.Replace("\\n", ""); 
firstName.Trim(); 

但我最终得到了和以前一样的字符串。我对mvc-app颇为陌生,我认为这会做这项工作,但事实并非如此。我怎样才能实现我的目标?

谢谢!

*编辑*

我已经修改我的代码告诉你什么是我迄今所做的,因为我想通知大家,第一线的工作,但没有休息。我最后有这个字符串:

"\r\nFirst Name:" 
+2

你不必转义'\ r',使用单个反斜杠,而不是double,同时'firstName.Trim()'会完成这项工作,但是你需要像'firstName = firstName.Trim();' – Habib 2013-03-26 12:35:08

回答

4

您可以使用String.TrimStart

string firstName = "\r\n       First Name:".TrimStart(); 

Demo

String.TrimStart工程因为Environment.NewLine属于white-space charactersTrimStart删除。它返回一个新的字符串(字符串是不可变的),因此您需要使用返回值并将其分配给您的变量。

+0

+1,Tim,我认为'TrimStart'也会删除'\ r \ n' – Habib 2013-03-26 12:32:59

+0

这是可行的,谢谢! – hsim 2013-03-26 12:34:09

+0

@Habib:我也是这么想的,但它不起作用(在ideone上),所以我添加了替换。 – 2013-03-26 12:37:27

6

需要将结果赋回到名字,因为字符串是不可改变的,string.Replace不改变原字符串相反,它会返回一个新的字符串。

firstName = firstName.Replace(" ", ""); 
firstName = firstName.Replace("\r", ""); 
firstName = firstName.Replace("\n", ""); 

顺便说一句,你可以使用string.Trim

string firstName = "\r\n       First Name:"; 
firstName = firstName.Trim(); 

因为String.Trim将消除所有的白色空间,包括\r从开始\n和字符串的结尾

编辑:

您需要使用单个反斜杠\r不是双倍\\r

+0

也考虑使用正则表达式,并且不需要使用\ r,\ n或'',只是使用空格“\ s” – David 2013-03-26 12:28:11

+0

啊!好!谢谢!它适用于空格,但它似乎不适用于\ n和\ r – hsim 2013-03-26 12:28:29

+0

@HerveS,处于编辑中,您需要对\ r和\ n执行相同的操作,但更好的方法是使用string.Trim,检查更新后的答案 – Habib 2013-03-26 12:30:58

2

Trim()将从字符串的开头和结尾删除空格。

string firstName = node.InnerText.Trim(); 

我测试了它在.NET 4.5和Trim()并删除\r\n

0

试试这个:

firstName = firstName.Trim();