我有一些包含多行空行的输入文本,我只想删除没有文本的行,然后再将其放入TextField。
示例:
Hello, how are you?
// empty line
// empty line
With you?
我想要的是:
Hello, how are you?
With you?
如何删除空白行?
答案 0 :(得分:1)
您想要做的是在传递文本之前修改要传递到文本字段中的文本。
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%知道dart的正则表达式的性能特征,所以可能还不错。只是我的Java背景表明,这始终是推荐的方法。