/*** * 将文字按照一个长度切割成小段的字符串,并将他们存在String[]中 * 分段标记为 '/n', 过滤 '/r' '/t' */ public static Vector text2Lines(String text, int width, Font font) { Vector strArray = new Vector(); StringBuffer strbuf = new StringBuffer(); int curLength = 0; int charLength = 0; int hanziLength = font.charWidth("汉".charAt(0)); char chr = 0; int len = text.length(); for (int i = 0; i < len; i++) { chr = text.charAt(i); if (chr == '/n') { // 换行标记 if (strbuf.length() != 0) { strArray.addElement(strbuf.toString()); strbuf.setLength(0); } else { strArray.addElement("");// 空行 } curLength = 0; } else if (chr != '/r' && chr != '/t') { // 过滤的字符 // UNICODE // 0x4E00 - 0x9FA5 当前中文 0x9FA6 - 0x9FFF待扩展 // 0xFE30 - 0xFFA0 全角字符中的一些标点字母数字等 if (chr > 19967 && chr < 40960 || chr > 65071 && chr < 65441) { charLength = hanziLength; // 对全角的直接使用全角宽度 } else { charLength = font.charWidth(chr); } if (width < curLength + charLength) { strArray.addElement(strbuf.toString()); strbuf.setLength(0); curLength = 0; } strbuf.append(chr); curLength += charLength; } } if (strbuf.length() > 0) { strArray.addElement(strbuf.toString()); } return strArray; }