亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用正則表達式從字符串中刪除破折號(-),除了 java 中的數字和單詞?

如何使用正則表達式從字符串中刪除破折號(-),除了 java 中的數字和單詞?

飲歌長嘯 2023-05-17 15:02:16
我正在嘗試從字符串中刪除破折號、下劃線和多余的空格。下面是我試過的代碼:public class Hello {   public static void main(String args[]) {          String blogName = "ABCD            __________________________________________________                      Size:      1234-5678 BAR                     8956-7896       ----------           CAR                     8756-2365";          String nameWithProperSpacing = blogName.replaceAll("\\s+", " ").replaceAll("-", "").replaceAll("_", "");           System.out.println( nameWithProperSpacing );    }}不過,我不希望它從單詞和數字之間刪除它們。例如,我當前的代碼將 8956-7896 更改為 89567896。我想要的輸出:ABCD Size:1234-5678 BAR 8956-7896 CAR 8756-2365
查看完整描述

5 回答

?
LEATH

TA貢獻1936條經驗 獲得超7個贊

您將需要使用前瞻和后視進行搜索


      String nameWithProperSpacing = blogName

              .replaceAll("(?<![a-zA-Z0-9])[-_](?![a-zA-Z0-9])", "") ///No -_ not inside a word

              .replaceAll("\\s+", " "); /// only 1 space between words


查看完整回答
反對 回復 2023-05-17
?
MYYA

TA貢獻1868條經驗 獲得超4個贊

您想要實現的目標可以簡單地通過(保留單個破折號,刪除多個破折號)來完成:

blogName.replaceAll("\\-(\\-)+","");


查看完整回答
反對 回復 2023-05-17
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

您可以使用非單詞邊界\B來刪除它們,但要做到這一點,您必須先刪除下劃線:

String nameWithProperSpacing = blogName.replaceAll("\\s+", " ").replaceAll("_+", "").replaceAll("\\B-+|-+\\B", "");



查看完整回答
反對 回復 2023-05-17
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

試試這個,不漂亮但適用于您的示例:

.replaceAll("\\s+", " ")
            .replaceAll("--", "").replaceAll("__", "").replaceAll(" _", "")
            .replaceAll("_ ", "").replaceAll(" -", "").replaceAll("- ", "")
            .replaceAll("  ", " ").trim();


查看完整回答
反對 回復 2023-05-17
?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

另一個解決方案:

String nameWithProperSpacing = blogName.replaceAll("([^A-Za-z0-9])(\\-|\\s|_)+", "$1 ");



查看完整回答
反對 回復 2023-05-17
  • 5 回答
  • 0 關注
  • 230 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號