如何仅删除 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 的背景表明这始终是推荐的方法。