1. 程式人生 > >字串程式設計題一道

字串程式設計題一道

編寫一個擷取字串的函式,輸入為一個字串和位元組數,輸出為按位元組擷取的字串。但是要保證漢字不被截去半個,列如“人ABC”4應該擷取為“人AB”,輸入“人ABC們DEF”6,應該輸出“人ABC”而不是“人ABC+半個們”。

package cn.exercise.algorithmsTest;

/**
 * 編寫一個擷取字串的函式,輸入為一個字串和位元組數,輸出為按位元組擷取的字串。但是要保證漢字不被截去半個,
 * 列如“人ABC"4應該擷取為“人AB”,輸入“人ABC們DEF”6,應該輸出“人ABC”而不是“人ABC+半個們”。
 * 
 * @author 小豪
 * 
 */
public
class Test13 { // 判斷字元c是否是中文字元,如果是返回true public static boolean isChinese(char c) { String sb = String.valueOf(c); return sb.getBytes().length > 1 ? true : false; } public String truncateStr(String str, int len) { if (str == null || str.equals("") || len == 0
) { return ""; } char[] charArr = str.toCharArray(); StringBuilder sb = new StringBuilder(""); int count = 0; for (char cc : charArr) { if (count < len) { if (isChinese(cc)) { if (count + 1 == len) {//如果要求擷取的字串的長度只差一個字元,但接下來的字元是中文。則擷取結果子串中不儲存這個中文字串
return sb.toString(); } count = count + 2; sb = sb.append(cc); } else { count = count + 1; sb = sb.append(cc); } } else { break; } } return sb.toString(); } public static void main(String[] args) { Test13 a = new Test13(); String sb = "人ABC們DEF"; System.out.println(a.truncateStr(sb, 6)); } } 執行結果 人ABC