Java學(xué)習(xí)字符串之方法返回、跳出嵌套循環(huán)及正則表達(dá)式
字符串
字符串(均可以查看API幫助文檔查找更多方法):
String
String(字符串不可變,若修改就會(huì)new出一個(gè)新對(duì)象)
查
(int型)length() 返回字符串長(zhǎng)度
(char型)charAt(int index) 取指定索引的字符(索引從 0 開(kāi)始)
(boolean型)contains(CharSequence s) 判斷是否包含指定子串
(boolean型)starsWith(String prefix)/endsWith(String suffix) 判斷開(kāi)頭 / 結(jié)尾
(boolean型)equals(Object obj)內(nèi)容相等判斷(別用 ==,因?yàn)?nbsp;== 對(duì)引用類型比較的是內(nèi)存地址,而new出來(lái)的字符串即使內(nèi)容相同,也會(huì)是不同的對(duì)象,地址不同)
(boolean型) equalsIgnoreCase(String another) 忽略大小寫比較內(nèi)容
(boolean型) isEmpty() 判斷是否為空字符串
拆
(String型)substring(int beginIndex) 從beginIndex(開(kāi)始索引)截取到末尾
(String型)substring(int beginIndex, int endIndex) 左閉右開(kāi),含頭不含尾截取字符串
(String [])split(String regex) 按正則拆分字符串,用 “正則表達(dá)式” 作為分隔符,把一個(gè)大字符串拆分成多個(gè)小字符串,存到數(shù)組里。
String str = "a, b; c|d";
String[] result = str.split("[,;|]");
// 正則 [,;|] 表示“逗號(hào)、分號(hào)、豎線中的任意一個(gè)”
// 結(jié)果是 ["a", " b", " c", "d"] → 按這幾個(gè)符號(hào)把字符串拆成了4部分換
(String型)replace(CharSequence old, CharSequence new) 全量替換(不支持正則)返回替換后的新字符串
String str = "a1b1c1";
String result = str.replace("1", "x");
// 結(jié)果是 "axbxcx" → 所有的"1"都被替換成了"x"(String型)replaceAll(String regex, String replacement) 正則替換,返回正則替換后的新字符串
String str = "a1b22c333";
String result = str.replaceAll("\\d+", "x");
// 正則 \\d+ 表示“一個(gè)或多個(gè)數(shù)字”
// 結(jié)果是 "axbxcx" → 不管是1位、2位還是3位數(shù)字,都被替換成了"x"(String型)toLowerCase()/toUpperCase() 轉(zhuǎn)小寫 / 大寫
(String型)valueOf(任意類型) 靜態(tài)方法,把其他類型轉(zhuǎn)字符串
| 參數(shù)寫法 | 能接收的類型 |
| CharSequence s | String、StringBuilder 等 |
| String prefix | 只能是 String |
| Object obj | 任意類型(String、Integer 等) |
StringBuilder
可變字符序列,單線程場(chǎng)景首選,效率高,無(wú)線程安全保障核心是直接修改本身,不生成新對(duì)象,適合頻繁拼接 / 修改
構(gòu)造容器:StringBuilder()/StringBuilder(String init)
append(任意類型) 拼接
insert(int offset, 任意類型) 指定位置(索引)插入內(nèi)容
delete(int start, int end) 刪除指定區(qū)間字符(左閉右開(kāi))
replace(int start, int end, String str):替換指定區(qū)間(左閉右開(kāi))
reverse() 字符串反轉(zhuǎn)
toString() 轉(zhuǎn)為 String 類型
可以鏈?zhǔn)秸{(diào)用
StringJoiner
解決帶分隔符拼接(如 a,b,c),無(wú)需手動(dòng)處理首尾分隔符
構(gòu)造容器:
StringJoiner(分隔符) 僅指定分隔符
StringJoiner(分隔符, 前綴, 后綴):帶前后綴
add(String str) 添加單個(gè)元素
merge(StringJoiner other) 合并另一個(gè) StringJoiner,other容器放在調(diào)用該方法容器的后面
toString() 轉(zhuǎn)為String類型
可以鏈?zhǔn)秸{(diào)用
方法返回
在寫函數(shù)時(shí),如果要返回多個(gè)數(shù)據(jù),可以把這些數(shù)據(jù)放在一個(gè)容器中(集合,數(shù)組),再把容器返回
跳出嵌套循環(huán)
在循環(huán)執(zhí)行過(guò)程中,如果有循環(huán)嵌套,break無(wú)法跳出我們想要的循環(huán),就可以在循環(huán)體(while,for,switch)前面加上一個(gè)標(biāo)識(shí)符和一個(gè)冒號(hào)(符合標(biāo)識(shí)符命名規(guī)范即可,循環(huán)就可以叫l(wèi)oop),在break那里,改為break 標(biāo)識(shí)符(break loop;)
當(dāng)然main方法也是一個(gè)線程,我在需要跳出循環(huán)處結(jié)束main方法這個(gè)主線程也可以,因此,把break;替換成return; return 0;正常狀態(tài)結(jié)束,其他數(shù)字表示異常狀態(tài)結(jié)束
當(dāng)然還可以用System.exit(0);來(lái)跳出這個(gè)虛擬機(jī)的運(yùn)行。
三者前者是跳出標(biāo)識(shí)符運(yùn)行的線程(后續(xù)如果有代碼,依然可以運(yùn)行),中者是跳出main函數(shù),主線程結(jié)束,后者是跳出整個(gè)Java虛擬機(jī),整個(gè)程序立刻結(jié)束
正則表達(dá)式
基礎(chǔ)匹配符
| 符號(hào) | 含義 | 示例 |
| . | 匹配任意單個(gè)字符(除了換行符) | a.c 匹配 abc、a1c、a c |
| [] | 匹配方括號(hào)內(nèi)的任意一個(gè)字符 | [abc] 匹配 a、b 或 c |
| [^] | 匹配不在方括號(hào)內(nèi)的任意一個(gè)字符 | [^abc] 匹配除 a、b、c 之外的字符 |
| - | 在[]中表示范圍 | [a-z] 匹配小寫字母,[0-9] 匹配數(shù)字 |
預(yù)定義字符集
| 符號(hào) | 含義 |
| \d | 匹配數(shù)字(等價(jià)于 [0-9]) |
| \D | 匹配非數(shù)字(等價(jià)于 [^0-9]) |
| \w | 匹配字母、數(shù)字、下劃線(等價(jià)于 [a-zA-Z0-9_]) |
| \W | 匹配非字母、數(shù)字、下劃線 |
| \s | 匹配空白字符(空格、制表符、換行等) |
| \S | 匹配非空白字符 |
數(shù)量限定符
用來(lái)指定前面的字符或組要出現(xiàn)多少次
| 符號(hào) | 含義 | 示例 |
| * | 匹配 0 次或多次 | a* 匹配 ""、a、aa、aaa... |
| + | 匹配 1 次或多次 | a+ 匹配 a、aa、aaa... |
| ? | 匹配 0 次或 1 次 | a? 匹配 "" 或 a |
| {n} | 精確匹配 n 次 | a{3} 匹配 aaa |
| {n,} | 匹配至少 n 次 | a{2,} 匹配 aa、aaa... |
| {n,m} | 匹配 n 到 m 次 | a{2,4} 匹配 aa、aaa、aaaa |
邊界匹配符
用來(lái)定位字符串的位置,不匹配任何字符
| 符號(hào) | 含義 | 示例 |
| ^ | 匹配字符串的開(kāi)頭 | ^abc 匹配以 abc 開(kāi)頭的字符串 |
| $ | 匹配字符串的結(jié)尾 | abc$ 匹配以 abc 結(jié)尾的字符串 |
| \b | 匹配單詞邊界(比如空格、標(biāo)點(diǎn)) | \bcat\b 匹配獨(dú)立的 cat,不匹配 category 里的 cat |
邏輯與分組
| 符號(hào) | 含義 | 示例 | ||
| () | 分組,把多個(gè)字符當(dāng)作一個(gè)整體處理 | (ab)+ 匹配 ab、abab、ababab... | ||
| ` | ` | 或,匹配左右任意一個(gè)表達(dá)式 | `a | b匹配a或b` |
| \num | 引用第 num 個(gè)分組的內(nèi)容(反向引用) | (a)\1 匹配 aa |
轉(zhuǎn)義字符
如果想匹配 .、*、( 這類有特殊含義的符號(hào),需要在前面加 \ 進(jìn)行轉(zhuǎn)義。匹配小數(shù)點(diǎn) . 要寫成 \.;匹配星號(hào) * 要寫成 \*
常見(jiàn)示例 | |
| 匹配手機(jī)號(hào) | ^1[3-9]\\d{9}$ |
| 匹配郵箱 | ^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$ |
| 匹配 URL | ^https?://[\\w-]+(\\.[\\w-]+)+(/[\\w-./?%&=]*)?$ |
匹配18 位身份證 | ^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}([0-9Xx])$ |
使用方法
| 場(chǎng)景 | 代碼實(shí)例 |
| 驗(yàn)證格式 | String regex = "你的正則"; boolean legal = 目標(biāo)字符串.matches(regex); |
| 替換內(nèi)容 | String result = 目標(biāo)字符串.replaceAll("你的正則", "替換后的內(nèi)容"); |
| 拆分字符串 | String[] arr = 目標(biāo)字符串.split("你的正則"); |
| 提取內(nèi)容 | Pattern p = Pattern.compile("你的正則"); Matcher m = p.matcher(目標(biāo)字符串); while(m.find()) { System.out.println(m.group()); } |
總結(jié)
到此這篇關(guān)于Java學(xué)習(xí)字符串之方法返回、跳出嵌套循環(huán)及正則表達(dá)式的文章就介紹到這了,更多相關(guān)Java字符串方法返回、跳出嵌套循環(huán)及正則內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis與Jpa的區(qū)別和性能對(duì)比總結(jié)
mybatis和jpa兩個(gè)持久層框架,從底層到用法都不同,但是實(shí)現(xiàn)的功能是一樣的,所以說(shuō)一直以來(lái)頗有爭(zhēng)議,所以下面這篇文章主要給大家介紹了關(guān)于Mybatis與Jpa的區(qū)別和性能對(duì)比的相關(guān)資料,需要的朋友可以參考下2021-06-06
IDEA中調(diào)用方法時(shí),如何同步顯示方法的注釋信息
這篇文章主要介紹了IDEA中調(diào)用方法時(shí),如何同步顯示方法的注釋信息問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
SpringBoot集成Validation參數(shù)校驗(yàn)
這篇文章主要為大家詳細(xì)介紹了SpringBoot集成Validation參數(shù)校驗(yàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Java Web Fragment在項(xiàng)目中使用方法詳解
這篇文章主要介紹了Web Fragment在項(xiàng)目中使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
java用靜態(tài)工廠代替構(gòu)造函數(shù)使用方法和優(yōu)缺點(diǎn)
這篇文章主要介紹了java用靜態(tài)工廠代替構(gòu)造函數(shù)使用方法和優(yōu)缺點(diǎn),需要的朋友可以參考下2014-02-02
使用mybatisplus接收mysql字段為json類型的數(shù)據(jù)方式
這篇文章主要介紹了使用mybatisplus接收mysql字段為json類型的數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
MyBatis-Plus 插件擴(kuò)展的實(shí)現(xiàn)
MyBatis-Plus通過(guò)插件擴(kuò)展機(jī)制增強(qiáng)功能,基于MyBatis Interceptor攔截器,包括分頁(yè)插件、邏輯刪除、SQL性能分析和樂(lè)觀鎖等,開(kāi)發(fā)者可自定義插件以適應(yīng)特定需求,有效地增強(qiáng)SQL執(zhí)行過(guò)程的控制和優(yōu)化,同時(shí)注意插件使用的性能影響和執(zhí)行順序2024-09-09

