您的位置 首页 > 腾讯云社区

C# dotnet 分割换行---林德熙

我在写一个 UWP 文本阅读器,我需要提升性能,需要将文本按行绘制但是文本里面的换行分割规则有点坑,本文写了一个辅助的方法用于分割换行

虽然有默认字符串提供的 Split 分割方法很好用,在一些字符串里面只包含 r 或 n 很好用,但是如果在字符串里面同时包含了 r 和 n 就不好玩了,如下面字符串

var str = "123123r123123n123123rn123";

我需要按照只要有 r 或 n 就分割字符串,如果有连续的 rn 就分割一次

var newLineList = str.Split('n', 'r').Select(text => text = text.Replace("r", "")) .ToList();

上面代码将会多分割出一个空行,原因是 rn 被分割为两行

我自己写了一个辅助代码

private static List<string> SplitMultiLines(string str) { var lineList = new List<string>(); var text = new StringBuilder(str.Length); for (var i = 0; i < str.Length; i++) { var c = str[i]; if (c == 'r') { lineList.Add(text.ToString()); text.Clear(); if (i < str.Length - 1) { if (str[i + 1] == 'n') { i++; } } } else if (c == 'n') { lineList.Add(text.ToString()); text.Clear(); if (i < str.Length - 1) { if (str[i + 1] == 'r') { i++; } } } else { text.Append(c); } } lineList.Add(text.ToString()); return lineList; }

上面代码能符合我预期,如果小伙伴有更简单的方法,欢迎告诉我

本文代码放在 github 欢迎小伙伴访问

本文会经常更新,请阅读原文: https://blog.lindexi.com/post/C-dotnet-%E5%88%86%E5%89%B2%E6%8D%A2%E8%A1%8C.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

---来自腾讯云社区的---林德熙

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: