標籤:java代碼 java 問題 round class print new system 結果
今天遇到一個字串,怎麼匹配空格都不成功!!!
我把空格複製到test.properties檔案 顯示“\u3000” ,這是什嗎? 這是全形空格!!!
查了一下 \s 不支援全形
1、"\s"匹配的是哪一種空格?
Regex中\s匹配任何空白字元,包括空格、定位字元、換頁符等等;中文全形空格
\s 並不能匹配中文全形空格。
\s 只能匹配下面六種字元(詳見 java.util.regex.Pattern 的 API DOC):
- 半形空格( )
- 水平定位字元(\t)
- 豎直定位字元
- 斷行符號(\r)
- 換行(\n)
- 換頁符(\f)
java代碼中的轉義 \\s
正則匹配0個或多個空格,我是這樣寫的 \\s*
正則匹配一個或多個空格,我是這樣寫的 \\s+
2、如何匹配全形空格
正則可以這麼寫:"[\\s\\p{Zs}]+" , 注意java代碼中的轉義。
3、測試
我的測試例子:
package com.test;public class zhengze {/** * 替換多個<br>成單個<br> * @param args */public static void main(String[] args) {String str1= "...中間省略很多...<br> <br>想到自己煮花生仁湯這麼簡單~趕緊動手試試吧!<br><br> <br> <br> <br>";String pattern = "<br>(\\s*<br>)+";System.out.println("\\s* 替換的結果:");System.out.println(str1.replaceAll(pattern,"<br>")); String str2= "...中間省略很多...<br> <br>想到自己煮花生仁湯這麼簡單~趕緊動手試試吧!<br><br> <br> <br> <br>";String new_pattern = "<br>([\\s\\p{Zs}]*<br>)+";System.out.println("[\\s\\p{Zs}]* 替換的結果:");System.out.println(str2.replaceAll(new_pattern,"<br>"));}}
結果:
\s* 替換的結果:...中間省略很多...<br> <br>想到自己煮花生仁湯這麼簡單~趕緊動手試試吧!<br> <br> <br>[\s\p{Zs}]* 替換的結果:...中間省略很多...<br>想到自己煮花生仁湯這麼簡單~趕緊動手試試吧!<br>
關於JAVA正則匹配空白字元的問題(全形空格與半形空格)