摘要:前言最近在開發一個小型的圈子系統。功能類似一個簡化的微博。產品大哥要求我立即開發一套過濾邏輯,刪除多余的空格和帖子。和都需要處理實現移除多余空行和空格移除行中的多余空格呵呵測試將風控打掃房間快遞費解封時代峰峻發的幾點睡
前言
最近在開發一個小型的圈子系統。功能類似一個簡化的微博。用戶可以在圈子里發帖子,回復帖子,點贊等等。項目上線不久就發現有很多用戶在圈子里發廣告,手段之豐富令人嘆為觀止啊。產品大哥昨天突然跑過來跟我說:現在圈子里有很多廣告,而且發廣告的人為了吸引別人的注意力經常會發出很多帶有很多空行和空格的帖子跟回復。這樣一個帖子就會沾滿屏幕,十分影響使用。產品大哥要求我立即開發一套過濾邏輯,刪除多余的空格和帖子。
需求按照如下要求處理字符串
字符串中連續的空格數不能大于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); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67547.html
摘要:文本換行其實是個非常常用但并不起眼的特性。在中日韓文情況下,和有區別,見下圖中日韓文情況下,仍舊等于沒有設,瀏覽器選擇在文字或標點符號處換行。但設成后,將不再允許斷詞哪怕是中日韓文,只能像英語系一樣根據半角空格或標點來換行。 文本換行其實是個非常常用但并不起眼的特性。你什么都不用設,瀏覽器自動就會換行。例如英語,瀏覽器會根據容器尺寸,選擇在半角空格或連字符處換行。例如中文,瀏覽器會選擇...
摘要:但我最近遇到了腳本結束標記照成頁面無法顯示的問題。但是,如果使用閉合標簽,任何由開發者,用戶,或者應用程序插入閉合標簽后面的空格都有可能會引起多余的輸出錯誤之后的輸出無法顯示空白頁。 在PHP官方文檔中,曾經指出最好不要再結尾添加?>結束標記。但我們編程的習慣和使用的IDE都會為我們自動建立php結束標記?>。這個標記使用在正常情況下是不影響程序的運行的。尤其在早期的php4中,這種標...
摘要:但我最近遇到了腳本結束標記照成頁面無法顯示的問題。但是,如果使用閉合標簽,任何由開發者,用戶,或者應用程序插入閉合標簽后面的空格都有可能會引起多余的輸出錯誤之后的輸出無法顯示空白頁。 在PHP官方文檔中,曾經指出最好不要再結尾添加?>結束標記。但我們編程的習慣和使用的IDE都會為我們自動建立php結束標記?>。這個標記使用在正常情況下是不影響程序的運行的。尤其在早期的php4中,這種標...
摘要:格式術語說明塊狀結構指的是一個類,方法或構造函數的主體。方法名或構造函數名與左括號留在同一行。空白垂直空白以下情況需要使用一個空行類內連續的成員之間字段,構造函數,方法,嵌套類,靜態初始化塊,實例初始化塊。 前言 這份文檔是Google Java編程風格規范的完整定義。當且僅當一個Java源文件符合此文檔中的規則, 我們才認為它符合Google的Java編程風格。 與其它的編程風格...
閱讀 2283·2021-10-09 09:41
閱讀 1746·2019-08-30 15:53
閱讀 989·2019-08-30 15:52
閱讀 3444·2019-08-30 11:26
閱讀 768·2019-08-29 16:09
閱讀 3422·2019-08-29 13:25
閱讀 2260·2019-08-26 16:45
閱讀 1932·2019-08-26 11:51