Google Prettify

2018-12-28

Java中如何截取固定長的字串


Java中截取字串的方法有很多,一般的情況下,我習慣使用Apache的StringUtils來處理。這是用來將字串進行縮寫的。不過StringUtils的字串截取,是根據char來截取。中文字算一個char、英文字算一個char。長度500的字串,就是500個字。範例如下:

StringUtils.abbreviate(str, maxWidth);

在某些資料庫中, 例如Oracle,可以開立欄位長度為單位為byte的欄位(varchar2(n byte)),這種欄位形不分中英文長度。當需要將適當長度的字串存入這樣的資料庫欄位時,截取長度的基準,就需要使用byte來計算。而中文字一般佔3byte,英文字是1 byte。有另外一種說法是中文字佔2byte,不過不管長度是多少,反正歐亞字元的編碼長度,就跟密碼一樣,我都搞不清。不過這並不影響我面接下來的內容。所以長度500的字串,在中英文夾雜的情況下,肯定不到500個字。解決的方法,主要是用Arrays.copyOf()這個method。


    private String abbreviate(String s) {
        byte[] sb = s.getBytes();
        final int max = 480;
        byte[] newsb = Arrays.copyOf(sb, max);
        return new String(newsb).trim();
    }

沒有留言 :

您或許對這些有興趣

Related Posts with Thumbnails

最後

謝謝您的閱讀,希望您可以有豐富的收獲。