java去掉文本中多余的空格与空行实例代码

网友投稿 395 2023-04-20


java去掉文本中多余的空格与空行实例代码

前言

最近因为工作的需要,在开发一个小型的圈子系统。功能类似一个简化的微博。用户可以在圈子里发帖子,回复帖子,点赞等等。项目上线不久就发现有很多用户在圈子里发广告,手段之丰富令人叹为观止啊。产品大哥昨天突然跑过来跟我说:现在圈子里有很多广告,而且发广告的人为了吸引别人的注意力经常会发出很多带有很多空行和空格的帖子跟回复。这样一个帖子就会沾满屏幕,十分影响使用。产品大哥要求我立即开发一套过滤逻辑,删除多余的空格和帖子,下面话不多说了,来一起看看详细的介绍:

需求

按照如下要求处理字符串

字符串中连续的空格数不能大于5,大于5时只保留5个

字符串中含cQjsFD有的连续空行数不能大于2,大于2时只保留2个

分析

记得之前的老大说过,字符串处理如果能不用正则表达式就不用,那个性能不好

分析一下实际应用场景,全是空格的一行也应该被算作空行。否则哪天发广告的人发现了这个漏洞就会利用起来。

\n和\r\n都需要处理

实现代码

/**

* 移除多余空行和空格

*/

public static String dealRedundantSpaceAndBlankLine(String content)

{

if (content == null || content.length() == 0)

{

return "";

}

StringBuilder strAfterRemoveCRSB = new StringBuilder();

for (int i = 0; i < content.length(); i++)

{

if (content.charAt(i) != '\r')

strAfterRemoveCRSB.append(content.charAt(i));

}

String strAfterRemoveCR = strAfterRemoveCRSB.toString();

if (strAfterRemoveCR == null || strAfterRemoveCR.length() == 0)

{

return "";

}

StringBuilder resultSB = new StringBuilder();

String[] lines = strAfterRemoveCR.split("\n");

int blankCount = 0;

for (String line : lines)

{

if (line == null)

{

continue;

http:// }

String lineTrim = line.trim();

if ("".equals(lineTrim))

{

blankCount++;

if (blankCount <= 2) {

resultSB.append("\n");

}

} else {

blankCount = 0;

resultSB.append(dealSpace4OneLine(line)).append("\n");

}

}

resultSB.deleteCharAt(resultSB.length() - 1);

return resultSB.toString();

}

/**

* 移除1行中的多余空格

*/

public static String dealSpace4OneLine(String line)

{

if (line == null || "".equals(line)) {

return "";

}

int spaceCount = 0;

StringBuilder sb = new StringBuilder();

for (int i = 0; i < line.length(); i++) {

char curChar = linhttp://e.charAt(i);

if (curChar == ' ')

{

spaceCount++;

if (spaceCount <= 5) {

sb.append(' ');

}

} else {

spaceCount = 0;

sb.append(curChar);

}

}

return sb.toString();

}

public static void main(String[] args) {

String str = "呵呵 测试\n\n\n\n \n \r\n将风控打扫房 间\n\n\n\n \n \n 快递费解封时代峰峻\n\r\n 发的几点睡 ";

String result = dealRedundantSpaceAndBlankLine(str);

System.out.println(result);

}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:关于Vue Webpack2单元测试示例详解
下一篇:Spring Boot中使用 Spring Security 构建权限系统的示例代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~