tai*_*ito 23 c# string visual-studio
例:
string str = "Lorem ipsum dolor sit amet,
consetetur sadipscing elitr, sed diam nonumy eirmod tempor
invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.";
string firstline;
Run Code Online (Sandbox Code Playgroud)
如何从字符串"str"到字符串"firstline"的第一行?
Mar*_*zek 54
而不是string.Split我会使用string.Substring和string.IndexOf只获得第一行,并避免不必要string[]的整个输入字符串.
string firstline = str.Substring(0, str.IndexOf(Environment.NewLine));
Run Code Online (Sandbox Code Playgroud)
Tim*_*ers 45
.NET已经有了一个读取器:StringReader.这样可以避免担心换行符的构成,以及字符串中是否存在换行符.
string first = new StringReader(str).ReadLine();
Run Code Online (Sandbox Code Playgroud)
Dou*_*las 18
String.Split将创建一个完整的子串数组,这对您的要求是浪费的.我建议使用基于索引的方法:
int index = str.IndexOfAny(new char[] { '\r', '\n' });
string firstline = index == -1 ? str : str.Substring(0, index);
Run Code Online (Sandbox Code Playgroud)
Kon*_*osa 15
假设你的字符串确实包含新行(\r和\n),你可以使用:
string line1 = str.Split(new [] { '\r', '\n' }).FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)
使用LINQ,您可以有一个简单的解决方案,它避免了最初将整个字符串拆分为字符串集合的开销。
string first = new string(str.TakeWhile(c => c != '\n').ToArray());
Run Code Online (Sandbox Code Playgroud)
单线解决方案:
string firstline = str.Split(new string[] { Environment.NewLine }, 2, StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)
这里第二个参数(=2)意味着找到第一行后,不再需要将该行进一步拆分为数组,因此它的工作速度更快。
| 归档时间: |
|
| 查看次数: |
27227 次 |
| 最近记录: |