前言:String的方法實在太多,看着羅列在前那密密麻麻的方法,徹底沒有將其練上一番的念頭。 html
正則表達式也是同理,知道基本語法後,我以爲不必多花時間將其一一寫上個Demo,那樣太累了。 java
東西一多,分下類就好。 正則表達式
String的方法簡單分類: ui
1. 把其餘類對象軟換成字符串形式。如: spa
static String | valueOf(double d) 返回double參數的字符串表示形式。 |
2. 比較、鏈接兩個字符串。如: .net
String | concat(String str) 將指定字符串鏈接到此字符串的結尾。 |
boolean | contains(CharSequence s) 當且僅當此字符串包含指定的 char 值序列時,返回 true。 |
boolean | contentEquals(CharSequence cs) 將此字符串與指定的CharSequence比較。 |
其中或許還會用到正則表達式: code
boolean | matches(String regex) 告知此字符串是否匹配給定的正則表達式 |
正則表達式的部分分類:(還有別的,不過我以爲如下的更常見些) htm
字符類 | |
---|---|
[abc] | a、b或c(簡單類) |
[^abc] | 任何字符,除了a、b或c(否認) |
[a-zA-Z] | a到z或A到Z,兩頭的字母包括在內(範圍) |
[a-d[m-p]] | a到d或m到p:[a-dm-p](並集) |
[a-z&&[def]] | d、e或f(交集) |
[a-z&&[^bc]] | a到z,除了b和c:[ad-z](減去) |
[a-z&&[^m-p]] | a到z,而非m到p:[a-lq-z](減去) |
預約義字符類 | |
. | 任何字符(與行結束符可能匹配也可能不匹配) |
\d | 數字:[0-9] |
\D | 非數字:[^0-9] |
\s | 空白字符:[ \t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | 單詞字符:[a-zA-Z_0-9] |
\W | 非單詞字符:[^\w] |
Logical 運算符 | |
---|---|
XY | X 後跟 Y |
X|Y | X 或 Y |
(X) | X,做爲捕獲組 |
Possessive 數量詞 | |
---|---|
X?+ | X,一次或一次也沒有 |
X*+ | X,零次或屢次 |
X++ | X,一次或屢次 |
X{n}+ | X,剛好 n 次 |
X{n,}+ | X,至少 n 次 |
X{n,m}+ | X,至少 n 次,可是不超過 m 次 |
public class StringDemo { 對象
/**
* 字符串 String
* 一、建立方式
* 1)、使用字符串池建立對象 = 方法區
* 2)、經過構造器 堆
* String()
* String(String )
* String(StringBuilder)
* String(StringBuffer)
* 二、查看方法區的 共享字符串 使用 intern()
*
* * 一、charAt(int index) 指定位置的字符
* 二、compareTo(String anotherString) 字符串比較大小
正數 > 負數 < 零 ==
compareToIgnoreCase(String str)
三、concat(String str) 至關於 +
四、contains(CharSequence s) 判斷是否存在子字符串
五、endsWith(String suffix) 判斷 子串結尾
startsWith(String prefix)
六、equals(Object anObject) 比較內容
equalsIgnoreCase(String anotherString)
七、hashCode() 重寫
八、indexOf(int ch)
indexOf(String str, int fromIndex)
lastIndexOf(String ch)
lastIndexOf(String ch, int fromIndex)
九、intern()
十、isEmpty()
十二、length()
1三、matches(String regex) -->正則表達式(分組查找 匹配 字符串是否徹底由數字組成)
1四、replace(char oldChar, char newChar) 替換: 不支持正則
replaceAll(String regex, String replacement) 支持正則
1五、substring(int beginIndex) 子串
1六、toString()
1七、trim() 先後空格
1八、static valueOf(Xxx b) -->其餘類型,轉成字符串
*
* @param
* @return void
* @Date 2013-10-28下午05:18:52
*/
public static void main(String[] args) {
String str = "A234567890";
str = "sfdsdfd";
str = "hhh@126.com";
String[] strs = str.split("@");
print(Arrays.toString(strs));
System.out.println(str.codePointAt(0));
System.out.println(str.codePointCount(0,5));
print("intern:"+str.intern());
String regex = "hhh@126.com";
/**
* 正則表達式:
* 最多見用法:
* 1. [] 如[a-z]
* 2. +
* 3. *
* 4. \\d, \\w……
* 5. ()
* 6. ?
*
* 分組:
* 字符類
[abc] a、b 或 c(簡單類)
[^abc] 任何字符,除了 a、b 或 c(否認)
[a-zA-Z] a 到 z 或 A 到 Z,兩頭的字母包括在內(範圍)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](並集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](減去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](減去)
預約義字符類
. 任何字符(與行結束符可能匹配也可能不匹配)
\d 數字:[0-9]
\D 非數字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 單詞字符:[a-zA-Z_0-9]
\W 非單詞字符:[^\w] ci
* Possessive 數量詞
X?+ X,一次或一次也沒有
X*+ X,零次或屢次
X++ X,一次或屢次
X{n}+ X,剛好 n 次
X{n,}+ X,至少 n 次
X{n,m}+ X,至少 n 次,可是不超過 m 次
Logical 運算符
XY X 後跟 Y
X|Y X 或 Y
(X) X,做爲捕獲組
*/ regex = "[a-zA-Z0-9]\\w+@[a-zA-Z0-9]+.com|cn(.cn)??"; regex = "[\\w&&[^-]]\\w+@[\\w&&[^-]]+.com|cn(.cn)??"; print("字符串:"+str+"\t正則表達式:"+regex+"\t"+str.matches(regex)); } public static void print(String msg){ System.out.println(msg); }; }