首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何仅删除TextField中没有文本的行?

如何仅删除TextField中没有文本的行?
EN

Stack Overflow用户
提问于 2019-06-26 17:35:14
回答 1查看 2K关注 0票数 1

我有一些包含多个空行的输入文本,在将其放入我的TextField之前,我只想删除没有文本的行。

示例:

代码语言:javascript
运行
复制
Hello, how are you?
// empty line
// empty line
With you?

我想要的是:

代码语言:javascript
运行
复制
Hello, how are you?
With you?

我怎样才能移除空行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-26 18:01:52

您要做的是在传入文本字段之前修改要传递给它的文本。

Dart有一个replaceAll方法,可以完成这个任务,并接受regex:

看起来应该是:

代码语言:javascript
运行
复制
myinputstring.replaceAll(new RegExp(r'(?:[\t ]*(?:\r?\n|\r))+'), '\n');

尽管您可能必须修改regex。regex所做的是查找两个或多个新行的任何序列(同时处理\r、\n和\r\n),然后用一个换行符替换它(同样,您可能希望将其更改为\r\n或\r)。

另一种方法是使用split和join。

代码语言:javascript
运行
复制
myinputstring
    .split(new RegExp(r'(?:\r?\n|\r)'))
    .where((s) => s.trim().length != 0)
    .join('\n');

这一次,我们只是在任何新行上拆分,然后检查中间的修整部分(为了去掉空格)是否为空,以及它们是否忽略它们,然后将字符串重新连接起来。

请注意,出于性能原因,最好是构造regex对象,将其保存到其他地方(即const),然后在replaceAll中使用它。不过,我不能100%肯定regex在dart中的性能特性,所以这可能很好;只是我在Java中的背景说,这始终是推荐的方法。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56778316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档