Skip to content

Instantly share code, notes, and snippets.

@smd877
Created July 25, 2012 02:52
Show Gist options
  • Save smd877/3174112 to your computer and use it in GitHub Desktop.
Save smd877/3174112 to your computer and use it in GitHub Desktop.
日本語文字列のバイト数切り分け
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
public class StringUtils {
/** バイトチェックする際の文字列エンコード */
public static final String ENCODING = "SJIS";
/**
* 指定バイト数で文字列を切りリストにするメソッド.<BR>
* 制限バイト数が極端に小さい場合無限ループするので注意。
*
* @param inStr 入力区文字列
* @param limit 切り分けるバイトサイズ
* @return 指定バイト数で分けられた文字列
* @throws UnsupportedEncodingException
*/
public static List<String> getListLimitByteStrings(String inStr, int limit) throws UnsupportedEncodingException {
List<String> list = new ArrayList<String>();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < inStr.length(); i++) {
// 1文字ずつ連結
sb.append(inStr.charAt(i));
// 指定エンコードでのバイト数が制限バイト数を超えたか
if (sb.toString().getBytes(ENCODING).length > limit) {
// リミットを越えているので最後の1文字削除
sb.deleteCharAt(sb.length() - 1);
list.add(sb.toString());
sb = new StringBuffer();
--i;
}
}
list.add(sb.toString());
return list;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment