在Java開發中,經常會遇到需要處理字元串長度的情況。字元串在Java中屬於引用類型,其長度可以通過length()方法獲得,但需要注意的是,對於字元串中包含中文字元時,其長度與英文字元不同。本文將從多個方面詳細闡述Java字元串長度處理的問題。
一、獲取字元串長度
在Java中獲取字元串長度的方法是通過length()方法實現的,示例如下:
String str = "Hello world!"; int len = str.length(); System.out.println(len); // 輸出結果:12
上述代碼中,首先定義了一個字元串變數str,其值為”Hello world!”。接著通過str.length()方法獲取字元串長度,並將其存儲在int類型的變數len中。最後將len輸出。需要注意的是,length()方法返回的是字元串的字元數,而不是位元組數。
二、處理包含中文字元的字元串長度
對於包含中文字元的字元串,如果直接使用length()方法獲取其長度,結果可能會與預期不符。這是因為對於中文字元採用的是UTF-8編碼方式,而其它字元採用的是ASCII編碼方式,所以對於中文字元,其所佔用的位元組數為3個,而不是1個。為了避免這種情況,可以採用以下兩種方法。
1、使用getBytes()方法
getBytes()方法可以將字元串轉換為位元組數組,然後利用位元組數組的length屬性獲取其長度。示例如下:
String str = "你好,世界!"; int len = str.getBytes().length; System.out.println(len); // 輸出結果:15
上述代碼中,首先定義了一個包含中文字元的字元串變數str,其值為”你好,世界!”。接著通過str.getBytes().length方法獲取字元串長度,並將其存儲在int類型的變數len中。最後將len輸出。
2、自定義函數處理中文字元
也可以自定義函數來處理包含中文字元的字元串長度,示例如下:
public static int getLength(String str){ int len = 0; for(int i = 0; i = 0x4E00 && c <= 0x9FA5){ // 判斷是否為中文字元 len += 3; }else{ len += 1; } } return len; } String str = "你好,世界!"; int len = getLength(str); System.out.println(len); // 輸出結果:15
上述代碼中,定義了一個自定義函數getLength(),其參數為一個字元串變數str。在函數中通過循環判斷字元串中每一個字元是否為中文字元,如果是則長度加3,否則長度加1。最後將長度返回。在主函數中,調用getLength()方法獲取字元串長度,並將其存儲在int類型的變數len中。最後將len輸出。
三、截取字元串
在Java中,可以通過字元串的substring()方法來獲取指定位置的子字元串。該方法有兩個重載版本,一個是substring(int beginIndex)方法,另一個則是substring(int beginIndex, int endIndex)方法。
1、使用substring(int beginIndex)方法
該方法將返回從指定的beginIndex位置開始到字元串末尾的子字元串,示例如下:
String str = "Hello world!"; String subStr = str.substring(6); System.out.println(subStr); // 輸出結果:world!
上述代碼中,首先定義了一個字元串變數str,其值為”Hello world!”。接著通過str.substring(6)方法獲取從第7個字元開始的子字元串,並將其存儲在字元串變數subStr中。最後將subStr輸出。
2、使用substring(int beginIndex, int endIndex)方法
該方法將返回從指定的beginIndex位置開始,到endIndex位置結束之間的子字元串,示例如下:
String str = "Hello world!"; String subStr = str.substring(0, 5); System.out.println(subStr); // 輸出結果:Hello
上述代碼中,首先定義了一個字元串變數str,其值為”Hello world!”。接著通過str.substring(0, 5)方法獲取從第1個字元開始,到第6個字元結束之間的子字元串,並將其存儲在字元串變數subStr中。最後將subStr輸出。
四、補全字元串
在Java中,可以通過字元串的format()方法來格式化字元串。該方法使用類似於C語言的printf函數的格式化字元串作為模板,然後使用變數值替代其中的格式化標記,從而生成所需要的字元串。
一個常用的需求就是在字元串前面或後面補全指定字元,可以採用以下方式實現。
1、使用String.format()方法
該方法是通過佔位符的方式,將指定字元補全到指定長度,示例如下。
String str = "Hello"; String padLeft = String.format("%10s", str); // 在左側補全指定字元 String padRight = String.format("%-10s", str); // 在右側補全指定字元 System.out.println(padLeft); // 輸出結果:" Hello" System.out.println(padRight); // 輸出結果:"Hello "
上述代碼中,首先定義了一個字元串變數str,其值為”Hello”。接著通過String.format(“%10s”, str)方法將該字元串在左側補全指定字元,並將結果存儲在變數padLeft中。再通過String.format(“%-10s”, str)方法將該字元串在右側補全指定字元,並將結果存儲在變數padRight中。最後將padLeft和padRight分別輸出。
2、使用StringUtils.leftPad()方法
該方法是Apache Commons Lang3庫中提供的一個方法。它可以在字元串前面補全指定字元,示例如下:
String str = "Hello"; String padLeft = StringUtils.leftPad(str, 10, " "); // 在左側補全指定字元 System.out.println(padLeft); // 輸出結果:" Hello"
上述代碼中,首先定義了一個字元串變數str,其值為”Hello”。接著通過StringUtils.leftPad(str, 10, ” “)方法將該字元串在左側補全指定字元,並將結果存儲在變數padLeft中。最後將padLeft輸出。
3、使用StringUtils.rightPad()方法
該方法與leftPad()方法類似,不同的是它在字元串後面補全指定字元,示例如下:
String str = "Hello"; String padRight = StringUtils.rightPad(str, 10, " "); // 在右側補全指定字元 System.out.println(padRight); // 輸出結果:"Hello "
上述代碼中,首先定義了一個字元串變數str,其值為”Hello”。接著通過StringUtils.rightPad(str, 10, ” “)方法將該字元串在右側補全指定字元,並將結果存儲在變數padRight中。最後將padRight輸出。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/236264.html