我需要在. net中将字符串分割为换行符,我所知道的分割字符串的唯一方法是使用split方法。然而,这将不允许我(容易)在换行上分裂,那么最好的方法是什么?
当前回答
从。net 6开始,我们可以使用新的string . replacelineends()方法来规范化跨平台的行结束符,所以现在我发现这是最简单的方法:
var lines = input
.ReplaceLineEndings()
.Split(Environment.NewLine, StringSplitOptions.None);
其他回答
愚蠢的回答:写到一个临时文件,这样你就可以使用可敬的 文件。readline
var s = "Hello\r\nWorld";
var path = Path.GetTempFileName();
using (var writer = new StreamWriter(path))
{
writer.Write(s);
}
var lines = File.ReadLines(path);
这里的示例非常棒,帮助我解决了当前的“挑战”,以一种更可读的方式分割rsa密钥。基于Steve Coopers的解决方案:
string Splitstring(string txt, int n = 120, string AddBefore = "", string AddAfterExtra = "")
{
//Spit each string into a n-line length list of strings
var Lines = Enumerable.Range(0, txt.Length / n).Select(i => txt.Substring(i * n, n)).ToList();
//Check if there are any characters left after split, if so add the rest
if(txt.Length > ((txt.Length / n)*n) )
Lines.Add(txt.Substring((txt.Length/n)*n));
//Create return text, with extras
string txtReturn = "";
foreach (string Line in Lines)
txtReturn += AddBefore + Line + AddAfterExtra + Environment.NewLine;
return txtReturn;
}
呈现一个具有33个字符宽度和引号的RSA-key是很简单的
Console.WriteLine(Splitstring(RSAPubKey, 33, "\"", "\""));
输出:
希望有人觉得它有用…
要拆分一个字符串,你需要使用一个字符串数组的重载:
string[] lines = theText.Split(
new string[] { Environment.NewLine },
StringSplitOptions.None
);
编辑: 如果要处理文本中不同类型的换行符,可以使用匹配多个字符串的功能。这将正确地拆分任意类型的换行,并保留文本中的空行和空格:
string[] lines = theText.Split(
new string[] { "\r\n", "\r", "\n" },
StringSplitOptions.None
);
我目前在VB中使用这个函数(基于其他答案)。NET:
Private Shared Function SplitLines(text As String) As String()
Return text.Split({Environment.NewLine, vbCrLf, vbLf}, StringSplitOptions.None)
End Function
它首先尝试在平台本地换行符上进行分割,然后退回到每个可能的换行符。
到目前为止,我只在一个类中需要这个。如果这种情况发生了变化,我可能会将此设置为Public并将其移动到实用程序类,甚至可能将其设置为扩展方法。
下面是如何重新加入队列的方法:
Private Shared Function JoinLines(lines As IEnumerable(Of String)) As String
Return String.Join(Environment.NewLine, lines)
End Function
Regex也是一个选项:
private string[] SplitStringByLineFeed(string inpString)
{
string[] locResult = Regex.Split(inpString, "[\r\n]+");
return locResult;
}
推荐文章
- 如何在c#中获得正确的时间戳
- Linq选择列表中存在的对象(A,B,C)
- c# .NET中的App.config是什么?如何使用它?
- c#:如何获得一个字符串的第一个字符?
- String类中的什么方法只返回前N个字符?
- 我如何提高ASP。NET MVC应用程序性能?
- 更好的方法将对象转换为int类型
- 我可以将c#字符串值转换为转义字符串文字吗?
- 在c#中转换char到int
- c#中朋友的对等物是什么?
- 关键字使用virtual+override vs. new
- 无法解析类型为“Microsoft.AspNetCore.Http.IHttpContextAccessor”的服务
- 在ASP中选择Tag Helper。NET Core MVC
- 如何在没有任何错误或警告的情况下找到构建失败的原因
- 跨线程操作无效:控件“textBox1”从创建它的线程以外的线程访问