如何仅删除 TextField 中没有文本的行?
How to remove only lines that do not have text in TextField?
我有一些包含多个空行的输入文本,我想在将其放入我的 TextField 之前只删除没有文本的行。
示例:
Hello, how are you?
// empty line
// empty line
With you?
而我想要的是:
Hello, how are you?
With you?
如何删除空行?
您要做的是在传入之前修改要传入文本字段的文本。
Dart 有一个 replaceAll 方法可以解决问题并接受正则表达式:
看起来像这样:
myinputstring.replaceAll(new RegExp(r'(?:[\t ]*(?:\r?\n|\r))+'), '\n');
尽管您可能需要修改正则表达式。正则表达式正在做的是寻找两个或多个换行符的任意序列(同时处理 \r、\n 和 \r\n),然后用单个换行符替换它(同样,您可能想将其更改为 \r\n 或 \r).
另一种方法是拆分和合并。
myinputstring
.split(new RegExp(r'(?:\r?\n|\r)'))
.where((s) => s.trim().length != 0)
.join('\n');
这次我们只是在任何新行上拆分,然后检查中间修剪(以去除空格)的部分是否为空,以及它们是否忽略了它们,然后将字符串连接回去向上。
请注意,出于性能原因,构建 regex 对象可能是个好主意,将其保存在其他地方(即 const),然后仅在 replaceAll 中使用它。我不是 100% 确定正则表达式在飞镖中的性能特征,所以它可能没问题;只是我在 Java 的背景表明这始终是推荐的方法。
我有一些包含多个空行的输入文本,我想在将其放入我的 TextField 之前只删除没有文本的行。
示例:
Hello, how are you?
// empty line
// empty line
With you?
而我想要的是:
Hello, how are you?
With you?
如何删除空行?
您要做的是在传入之前修改要传入文本字段的文本。
Dart 有一个 replaceAll 方法可以解决问题并接受正则表达式:
看起来像这样:
myinputstring.replaceAll(new RegExp(r'(?:[\t ]*(?:\r?\n|\r))+'), '\n');
尽管您可能需要修改正则表达式。正则表达式正在做的是寻找两个或多个换行符的任意序列(同时处理 \r、\n 和 \r\n),然后用单个换行符替换它(同样,您可能想将其更改为 \r\n 或 \r).
另一种方法是拆分和合并。
myinputstring
.split(new RegExp(r'(?:\r?\n|\r)'))
.where((s) => s.trim().length != 0)
.join('\n');
这次我们只是在任何新行上拆分,然后检查中间修剪(以去除空格)的部分是否为空,以及它们是否忽略了它们,然后将字符串连接回去向上。
请注意,出于性能原因,构建 regex 对象可能是个好主意,将其保存在其他地方(即 const),然后仅在 replaceAll 中使用它。我不是 100% 确定正则表达式在飞镖中的性能特征,所以它可能没问题;只是我在 Java 的背景表明这始终是推荐的方法。