我正在嘗試從字符串中刪除破折號、下劃線和多余的空格。下面是我試過的代碼: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

夢里花落0921
TA貢獻1772條經驗 獲得超6個贊
您可以使用非單詞邊界\B
來刪除它們,但要做到這一點,您必須先刪除下劃線:
String nameWithProperSpacing = blogName.replaceAll("\\s+", " ").replaceAll("_+", "").replaceAll("\\B-+|-+\\B", "");

慕神8447489
TA貢獻1780條經驗 獲得超1個贊
試試這個,不漂亮但適用于您的示例:
.replaceAll("\\s+", " ") .replaceAll("--", "").replaceAll("__", "").replaceAll(" _", "") .replaceAll("_ ", "").replaceAll(" -", "").replaceAll("- ", "") .replaceAll(" ", " ").trim();

斯蒂芬大帝
TA貢獻1827條經驗 獲得超8個贊
另一個解決方案:
String nameWithProperSpacing = blogName.replaceAll("([^A-Za-z0-9])(\\-|\\s|_)+", "$1 ");
添加回答
舉報
0/150
提交
取消