2012-03-15 75 views
3

这是问题所在。我正在使用4.0 .net平台开发WPF和C#项目。我有一个字符串,我从文本框中获得了Accepts return =“true”。字符串如下如何检测字符串中的回车符

string P = @"Copyright 1995-2010 BYTES. 
      All rights Reserved. 
      Formerly "TheScripts.com" from 2005-2008"; 

现在我想检测何时遇到回车符。所以我可以将字符串缩短为“Copyright 1995-2010 BYTES”。并在遇到回车符后删除所有字符。

我试着这样做

string ip = datarow[0].ToString(); 
string trimed= ip.TrimEnd(new char[] {'\r','\n'}); 
profileFNcb.Items.Add(trimed);  

不工作请帮助家伙

回答

2

string.Split使用与Environment.NewLine以分割线的串分解:

myString.Split(new [] {Environment.NewLine}, 
       StringSplitOptions.RemoveEmptyEntries) 

这导致包含每一行的字符串数组。

为了得到第一线,承担返回string[]处于lines变量:

string firstLine = lines[0]; // firstLine = "Copyright 1995-2010 BYTES." 

您的解决方案是不工作的原因 - 在TrimEnd仅从结束的字符串的删除字符,不是中间的。

2

哦:我误解你的问题 - 这应该帮助:

string onlyCopyright = P.Substring(0, P.IndexOf("\n")); 

甚至更​​好:

string onlyCopyright = P.Substring(0, P.IndexOf(Environment.NewLine)); 

Trim仅删除字符串开头和结尾的空格。您要替换:

string noNewLine = ip.Replace("\n", "").Replace("\r", ""); 
+0

非常感谢......真棒该做的。再次感谢Thorsten – 2012-03-15 13:42:00

0

TrimEnd删除尾随字符,它不在这些字符的第一个实例“结束”字符串。你需要做的是搜索'\ r'或'\ n'的第一个实例并保留字符的子字符串。

0

试试这个:

string P = @"Copyright 1995-2010 BYTES. 
     All rights Reserved. 
     Formerly ""TheScripts.com"" from 2005-2008"; 

string firstLine = P.Split(
         new string[] { System.Environment.NewLine }, 
         StringSplitOptions.RemoveEmptyEntries) 
        .FirstOrDefault()