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