亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java字符串常見的操作(比較,查找,替換等)

 更新時間:2022年01月09日 16:13:03   作者:Naion  
在Java當(dāng)中,為字符串類提供了豐富的操作方法,對于字符串,我們常見的操作就是:字符串的比較、查找、替換、拆分、截取以及其他的一些操作,本文就詳細(xì)的介紹一下,感興趣的可以了解一下

在Java當(dāng)中,為字符串類提供了豐富的操作方法,對于字符串,我們常見的操作就是:字符串的比較、查找、替換、拆分、截取以及其他的一些操作。

        在Java中,有String,StringBuffer 和 StringBuilder字符串類,他們的區(qū)別是String類是不可修改的,而StringBuffer 和 StringBuilder類是可以修改的。要注意的是,這里的修改不是字面意思上的修改。簡單來說,比如,要實現(xiàn)兩個字符串的拼接,對于前者來說,假設(shè)有str1 = "hello" , 要給他拼接一個"world",那么是這樣的,在這個過程中,"hello"本身沒有變,它還在池中。但是對于后兩者來說,假設(shè)有str2 = "世界",要拼接''你好'',拼接之后,池中就不存在"世界"了。StringBuffer 和 StringBuilder的區(qū)別就是一個是線程安全的,一個不是線程安全的。

        下面,我們圍繞字符串的一些操作來進(jìn)行說明。

一,字符串的比較

1,equal()方法

官方文檔描述:

public boolean equals(Object anObject)

將此字符串與指定對象進(jìn)行比較。 其結(jié)果是true當(dāng)且僅當(dāng)該參數(shù)不是null并且是String對象,表示相同的字符序列作為該對象。

參數(shù)

anObject - 對比這個 String的對象

結(jié)果

true如果給定的對象代表一個 String等效于這個字符串, 否則false

        String類當(dāng)中的equal()方法用來比較兩個字符串是否相等。這一種比較是區(qū)分大小寫的。當(dāng)有一個是字符串常量的時候,建議的寫法是將字符串常量放在外面,這樣的理由是:如果外面的變量是null的時候,就會拋出空指針異常。

String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1.equals(str2));
// 或者這樣寫也行
// System.out.println(str2.equals(str1)); 
// 執(zhí)行結(jié)果
//true
String str = new String("Hello");
// 方式一
System.out.println(str.equals("Hello"));
// 方式二
System.out.println("Hello".equals(str));
//——————————————————————————————————————
String str = null;
// 方式一
// 執(zhí)行結(jié)果 拋出 java.lang.NullPointerException 異常
System.out.println(str.equals("Hello")); 
// 方式二
// 執(zhí)行結(jié)果 false
System.out.println("Hello".equals(str));  

        如果不需要區(qū)分大小寫的比較,使用equalsIgnoreCase()方法。這種方法一般見于驗證碼驗證的時候。

String str1 = "hello" ; 
String str2 = "Hello" ; 
//結(jié)果為false
System.out.println(str1.equals(str2)); 
//結(jié)果為true 
System.out.println(str1.equalsIgnoreCase(str2));

2,compareTo()方法

官方文檔描述:

public int compareTo(String anotherString)

字典順序比較兩個字符串。 比較是基于字符串中每個字符的Unicode值。 由該String對象表示的字符序列按字典順序與由參數(shù)字符串表示的字符序列進(jìn)行比較。 如果String對象按字典順序排列在參數(shù)字符串之前,結(jié)果為負(fù)整數(shù)。 結(jié)果是一個正整數(shù),如果String對象按字典順序跟隨參數(shù)字符串。 如果字符串相等,結(jié)果為零; compareTo返回0 ,當(dāng)equals(Object)方法將返回true 。

如果沒有它們不同的索引位置,則較短的字符串按字典順序位于較長的字符串之前。 在這種情況下, compareTo返回字符串長度的差異 - 即值:this.length()-anotherString.length()

參數(shù)

anotherString - 要比較的 String 。

結(jié)果

如果參數(shù)字符串等于此字符串,則值為0 ; 一個值小于0如果這個字符串的字典比字符串參數(shù)小; 如果此字符串的字典大小超過字符串參數(shù),則值大于0 。

        在String類中compareTo()方法是一個非常重要的方法,該方法返回一個整型,該數(shù)據(jù)會根據(jù)大小關(guān)系返回三類內(nèi)容: 1. 相等:返回0. 2. 小于:返回內(nèi)容小于0. 3. 大于:返回內(nèi)容大于0。compareTo()是一個可以區(qū)分大小關(guān)系的方法,是String方法里是一個非常重要的方法。它的比較大小規(guī)則, 總結(jié)成三個字 "字典序" 相當(dāng)于判定兩個字符串在一本詞典的前面還是后面。先比較第一 個字符的大小(根據(jù) unicode 的值來判定),如果不分勝負(fù),就依次比較后面的內(nèi)容。

System.out.println("A".compareTo("a")); // -32 
System.out.println("a".compareTo("A")); // 32 
System.out.println("A".compareTo("A")); // 0 
System.out.println("AB".compareTo("AC")); // -1 
System.out.println("劉".compareTo("楊")); //比較結(jié)果介于unicode碼

二,字符串查找

1,contains()方法

官方文檔描述:

public boolean contains(CharSequence s)

當(dāng)且僅當(dāng)此字符串包含指定的char值序列時才返回true。

參數(shù)

s - 搜索的順序

結(jié)果

如果此字符串包含 s ,則為true,否則為false

        用來判斷一個子串是否存在。

String str = "helloworld" ; 
System.out.println(str.contains("world")); // true 

2, indexOf()方法

官方文檔描述:

public int indexOf(int ch)

返回指定字符第一次出現(xiàn)的字符串內(nèi)的索引。 如果與值的字符ch在此表示的字符序列發(fā)生String第一事件發(fā)生之對象,則索引(Unicode碼)被返回。如果此字符串中沒有此類字符,則返回-1 。

參數(shù)

ch - 一個字符(Unicode代碼點)。

結(jié)果

在通過該對象表示的字符序列的字符的第一次出現(xiàn)的索引,或 -1如果字符不會發(fā)生。

        從頭開始查找指定字符串的位置,查到了就返回位置的開始索引(從0開始),如果查不到,就返回-1。

String str = "helloworld" ; 
System.out.println(str.indexOf("world")); // 5,w開始的索引
System.out.println(str.indexOf("bit")); // -1,沒有查到

3,startsWith()和endsWith()方法

public boolean startsWith(String prefix)

測試此字符串是否以指定的前綴開頭。

參數(shù)

prefix - 前綴。

結(jié)果

如果由參數(shù)表示的字符序列是由該字符串表示的字符序列的前綴那么返回true; 否則false。 還需要注意的是true如果參數(shù)為空字符串或等于該將被返回String如由所確定的對象equals(Object)方法。

 

public boolean endsWith(String suffix)

測試此字符串是否以指定的后綴結(jié)尾。

參數(shù)

suffix - 后綴。

結(jié)果

true如果由參數(shù)表示的字符序列是由該對象表示的字符序列的后綴; false否則。 注意,結(jié)果將是true如果參數(shù)是空字符串或等于該String如由所確定的對象equals(Object)方法。

String str = "**@@helloworld!!" ; 
System.out.println(str.startsWith("**")); // true 
System.out.println(str.startsWith("@@",2)); // ture 
System.out.println(str.endsWith("!!")); // true

三,字符串替換

replaceAll()方法

public String replaceAll(String regex,String replacement)

用給定的替換替換與給定的regular expression匹配的此字符串的每個子字符串。

請注意,替換字符串中的反斜杠( \ )和美元符號( $ )可能會導(dǎo)致結(jié)果與被視為文字替換字符串時的結(jié)果不同; 見Matcher.replaceAll 。 如果需要,使用Matcher.quoteReplacement(java.lang.String)來抑制這些字符的特殊含義。

參數(shù)

regex - 要匹配此字符串的正則表達(dá)式

replacement - 要替換每個匹配的字符串

結(jié)果

所得 String

異常

PatternSyntaxException - 如果正則表達(dá)式的語法無效

        replaceAll()方法將會替換所有的指定的內(nèi)容。想要替換首個字母的話,使用replaceFirst()方法。要注意的是:由于字符串是不可變對象, 替換不修改當(dāng)前字符串, 而是產(chǎn)生一個新的字符串。

String str = "helloworld" ; 
System.out.println(str.replaceAll("l", "_")); //he__owor_d
System.out.println(str.replaceFirst("l", "_")); //he_loworld

四,字符串拆分

        字符串的拆分是常見的操作,比如在使用BufferedReader進(jìn)行數(shù)據(jù)的快速輸入輸出,這個時候,先輸入字符串,在拆分,轉(zhuǎn)格式后成為int等數(shù)據(jù)類型。

split()方法

public String[] split(String regex)

將此字符串拆分為給定的regular expression的匹配。

該方法的工作原理是通過使用給定表達(dá)式和限制參數(shù)為零調(diào)用雙參數(shù)split方法。 因此,尾隨的空字符串不會包含在結(jié)果數(shù)組中。

參數(shù)

regex - 分隔正則表達(dá)式

結(jié)果

通過將該字符串圍繞給定的正則表達(dá)式的匹配來計算的字符串?dāng)?shù)組

異常

PatternSyntaxException - 如果正則表達(dá)式的語法無效

         另外有些特殊字符作為分割符可能無法正確切分, 需要加上轉(zhuǎn)義符號\\。1,字符"|","*","+"都得加上轉(zhuǎn)義字符,前面加上"\". 2,如果一個字符串中有多個分隔符,可以用"|"作為連字符。

String str = "hello world hello People" ; 
String[] result = str.split(" ") ; // 按照空格拆分
for(String s: result) { 
 System.out.println(s); 
} 

String str = "192.168.1.1" ; 
String[] result = str.split("\\.") ; 
for(String s: result) { 
 System.out.println(s); 
}
String str = "name=zhangsan&age=18" ; 
String[] result = str.split("&") ; 
for (int i = 0; i < result.length; i++) { 
 String[] temp = result[i].split("=") ; 
 System.out.println(temp[0]+" = "+temp[1]); 
}

五,字符串截取

substring()方法

官方文檔描述:

public String substring(int beginIndex)

返回一個字符串,該字符串是此字符串的子字符串。 子字符串以指定索引處的字符開頭,并擴(kuò)展到該字符串的末尾。

參數(shù)

beginIndex - 開始索引(含)。

結(jié)果

指定的子字符串。

異常

IndexOutOfBoundsException    如果 beginIndex為負(fù)或大于此 String對象的長度。

        該方法能夠?qū)囊粋€完整的字符串之中截取出部分內(nèi)容,從指定索引截取到結(jié)尾。要注意的是:1. 索引從0開始 2. 注意前閉后開區(qū)間的寫法, substring(0, 5) 表示包含 0 號下標(biāo)的字符, 不包含 5 號下標(biāo)。

String str = "helloworld" ; 
System.out.println(str.substring(5)); // world
System.out.println(str.substring(0, 5));//hello

六,字符串其他常見的操作方法

        這些常見的操作方法比如:取得字符串的長度,去掉字符串兩邊的空格,保留中間的空格,字符串大小寫轉(zhuǎn)換,字符串反轉(zhuǎn)。

1,trim()方法

官方文檔描述:

public String trim()

返回一個字符串,其值為此字符串,并刪除任何前導(dǎo)和尾隨空格。

如果此String對象表示一個空字符序列,或由該代表字符序列的第一個和最后一個字符String對象都具有代碼大于'\u0020' (空格字符),則此參考String被返回對象。

否則,如果字符串中沒有字符大于'\u0020'的字符,則返回一個表示空字符串的String對象。

否則,令k為代碼大于'\u0020'的字符串中第一個字符的'\u0020' ,并且m為代碼大于'\u0020'的字符串中最后一個字符的'\u0020' 。 將返回一個String對象,表示該字符串的子字符串,以索引k處的字符開頭,以索引m為止的字符結(jié)束,結(jié)果為this.substring(k, m + 1) 。

此方法可用于從字符串的開始和結(jié)尾修剪空格(如上定義)。

結(jié)果

一個字符串,其值是此字符串,除去任何前導(dǎo)和尾隨空格,或者如果該字符串沒有前導(dǎo)或尾隨的空格,則為該字符串。

        trim()方法會去掉字符串開頭和結(jié)尾的空白字符(空格, 換行, 制表符等)。

String str = " hello world " ; 
System.out.println("["+str+"]"); 
System.out.println("["+str.trim()+"]"); 

2,toUpperCase()和toLowerCase()方法

官方文檔描述:

public String toUpperCase(Locale locale)

參數(shù)

locale - 使用此區(qū)域設(shè)置的案例轉(zhuǎn)換規(guī)則

結(jié)果

String,轉(zhuǎn)換成大寫。

 

public String toLowerCase(Locale locale)

參數(shù)

locale - 使用此區(qū)域設(shè)置的案例轉(zhuǎn)換規(guī)則

結(jié)果

String ,轉(zhuǎn)換成小寫。

String str = " hello%$$%@#$%world 哈哈哈 " ; 
System.out.println(str.toUpperCase()); // HELLO%$$%@#$%WORLD 哈哈哈 
System.out.println(str.toLowerCase()); // hello%$$%@#$%world 哈哈哈 

3,length()方法

官方文檔描述:

public int length()

返回此字符串的長度。 長度等于字符串中的數(shù)字Unicode code units 。

結(jié)果

由該對象表示的字符序列的長度。

         注意:數(shù)組長度使用數(shù)組名稱.length屬性,而String中使用的是length()方法。

String str = " hello%$$%@#$%world 哈哈哈 " ; 
System.out.println(str.length()); //24

3,reverse()方法

        String類不提供reverse()方法,該方法存在于StringBuffer和StringBuilder類當(dāng)中。要使用該方法,就要new出由他們生成的對象來使用。StringBuffer和StringBuilder二者非常相似,在這里,用StringBuffer來說明。

官方文檔描述:

public StringBuilder reverse()

導(dǎo)致該字符序列被序列的相反代替。 如果序列中包含任何替代對,則將它們視為單個字符進(jìn)行反向操作。

結(jié)果

對這個對象的引用

StringBuffer sb = new StringBuffer("helloworld"); 
System.out.println(sb.reverse()); //dlrowolleh

到此這篇關(guān)于Java字符串常見的操作(比較,查找,替換等)的文章就介紹到這了,更多相關(guān)Java字符串操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談三分鐘學(xué)習(xí)Java泛型中T、E、K、V、?的含義

    淺談三分鐘學(xué)習(xí)Java泛型中T、E、K、V、?的含義

    這篇文章主要介紹了淺談三分鐘學(xué)習(xí)Java泛型中T、E、K、V、?的含義,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Windows安裝Maven并配置環(huán)境變量

    Windows安裝Maven并配置環(huán)境變量

    Maven是一個基于Java的項目管理工具,可以管理項目的構(gòu)建、測試和部署,本文就來介紹一下Windows安裝Maven并配置環(huán)境變量,感興趣的可以了解一下
    2024-11-11
  • 情人節(jié)寫給女朋友Java Swing代碼程序

    情人節(jié)寫給女朋友Java Swing代碼程序

    這篇文章主要為大家分享了情人節(jié)寫給女朋友的java小程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下,祝大家每天都是情人節(jié)
    2018-02-02
  • SpringBoot使用prometheus監(jiān)控的示例代碼

    SpringBoot使用prometheus監(jiān)控的示例代碼

    這篇文章主要介紹了SpringBoot使用prometheus監(jiān)控的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • java實現(xiàn)飛機(jī)大戰(zhàn)游戲

    java實現(xiàn)飛機(jī)大戰(zhàn)游戲

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)飛機(jī)大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Java BeanUtils工具類常用方法講解

    Java BeanUtils工具類常用方法講解

    這篇文章主要介紹了Java BeanUtils工具類常用方法講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • mybatis?plus配置自動create_time和update_time方式

    mybatis?plus配置自動create_time和update_time方式

    在處理數(shù)據(jù)時,注意時間類型的轉(zhuǎn)換非常重要,不同編程環(huán)境和數(shù)據(jù)庫對時間數(shù)據(jù)的處理方式各異,因此在數(shù)據(jù)遷移或日常處理中需謹(jǐn)慎處理時間格式,個人經(jīng)驗表明,了解常用的時間轉(zhuǎn)換函數(shù)和方法能有效避免錯誤,提高工作效率,希望這些經(jīng)驗?zāi)転榇蠹規(guī)韼椭?/div> 2024-09-09
  • 從零到掌握Spring Boot Validation 接口校驗的詳細(xì)過程

    從零到掌握Spring Boot Validation 接口校驗的詳細(xì)過程

    本文詳細(xì)介紹了SpringBoot的Validation接口校驗機(jī)制,包括其核心功能、常用注解、自定義校驗、以及實際應(yīng)用場景,通過注解定義數(shù)據(jù)校驗規(guī)則,感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • SpringBoot整合Jackson的過程詳解

    SpringBoot整合Jackson的過程詳解

    這篇文章給大家介紹了SpringBoot整合Jackson的整合過程,文中通過代碼示例給給大家介紹的非常詳細(xì),并附帶附工具類與使用案例,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12
  • 如何巧用HashMap一行代碼統(tǒng)計單詞出現(xiàn)次數(shù)詳解

    如何巧用HashMap一行代碼統(tǒng)計單詞出現(xiàn)次數(shù)詳解

    這篇文章主要給大家介紹了關(guān)于如何巧用HashMap一行代碼統(tǒng)計單詞出現(xiàn)次數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評論