在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-hant/n/236264.html