摘要:前言最近在开发一个小型的圈子系统。功能类似一个简化的微博。产品大哥要求我立即开发一套过滤逻辑,删除多余的空格和帖子。和都需要处理实现移除多余空行和空格移除行中的多余空格呵呵测试将风控打扫房间快递费解封时代峰峻发的几点睡
前言
最近在开发一个小型的圈子系统。功能类似一个简化的微博。用户可以在圈子里发帖子,回复帖子,点赞等等。项目上线不久就发现有很多用户在圈子里发广告,手段之丰富令人叹为观止啊。产品大哥昨天突然跑过来跟我说:现在圈子里有很多广告,而且发广告的人为了吸引别人的注意力经常会发出很多带有很多空行和空格的帖子跟回复。这样一个帖子就会沾满屏幕,十分影响使用。产品大哥要求我立即开发一套过滤逻辑,删除多余的空格和帖子。
需求按照如下要求处理字符串
字符串中连续的空格数不能大于5,大于5时只保留5个
字符串中含有的连续空行数不能大于2,大于2时只保留2个
分析记得之前的老大说过,字符串处理如果能不用正则表达式就不用,那个性能不好
分析一下实际应用场景,全是空格的一行也应该被算作空行。否则哪天发广告的人发现了这个漏洞就会利用起来。
和 都需要处理
实现/** * 移除多余空行和空格 */ 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) != " ") strAfterRemoveCRSB.append(content.charAt(i)); } String strAfterRemoveCR = strAfterRemoveCRSB.toString(); if (strAfterRemoveCR == null || strAfterRemoveCR.length() == 0) { return ""; } StringBuilder resultSB = new StringBuilder(); String[] lines = strAfterRemoveCR.split(" "); int blankCount = 0; for (String line : lines) { if (line == null) { continue; } String lineTrim = line.trim(); if ("".equals(lineTrim)) { blankCount++; if (blankCount <= 2) { resultSB.append(" "); } } else { blankCount = 0; resultSB.append(dealSpace4OneLine(line)).append(" "); } } 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 = line.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 = "呵呵 测试 将风控打扫房 间 快递费解封时代峰峻 发的几点睡 "; String result = dealRedundantSpaceAndBlankLine(str); System.out.println(result); }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67547.html
摘要:文本换行其实是个非常常用但并不起眼的特性。在中日韩文情况下,和有区别,见下图中日韩文情况下,仍旧等于没有设,浏览器选择在文字或标点符号处换行。但设成后,将不再允许断词哪怕是中日韩文,只能像英语系一样根据半角空格或标点来换行。 文本换行其实是个非常常用但并不起眼的特性。你什么都不用设,浏览器自动就会换行。例如英语,浏览器会根据容器尺寸,选择在半角空格或连字符处换行。例如中文,浏览器会选择...
摘要:但我最近遇到了脚本结束标记照成页面无法显示的问题。但是,如果使用闭合标签,任何由开发者,用户,或者应用程序插入闭合标签后面的空格都有可能会引起多余的输出错误之后的输出无法显示空白页。 在PHP官方文档中,曾经指出最好不要再结尾添加?>结束标记。但我们编程的习惯和使用的IDE都会为我们自动建立php结束标记?>。这个标记使用在正常情况下是不影响程序的运行的。尤其在早期的php4中,这种标...
摘要:但我最近遇到了脚本结束标记照成页面无法显示的问题。但是,如果使用闭合标签,任何由开发者,用户,或者应用程序插入闭合标签后面的空格都有可能会引起多余的输出错误之后的输出无法显示空白页。 在PHP官方文档中,曾经指出最好不要再结尾添加?>结束标记。但我们编程的习惯和使用的IDE都会为我们自动建立php结束标记?>。这个标记使用在正常情况下是不影响程序的运行的。尤其在早期的php4中,这种标...
摘要:格式术语说明块状结构指的是一个类,方法或构造函数的主体。方法名或构造函数名与左括号留在同一行。空白垂直空白以下情况需要使用一个空行类内连续的成员之间字段,构造函数,方法,嵌套类,静态初始化块,实例初始化块。 前言 这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。 与其它的编程风格...
阅读 2270·2021-10-09 09:41
阅读 1731·2019-08-30 15:53
阅读 970·2019-08-30 15:52
阅读 3421·2019-08-30 11:26
阅读 749·2019-08-29 16:09
阅读 3384·2019-08-29 13:25
阅读 2222·2019-08-26 16:45
阅读 1910·2019-08-26 11:51