import java.util.Vector;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
public final class TextUtil {
/**
* 分割字符串
* @param value 需要处理的字符串
* @param regex 分隔符
* @return 返回结果数组
*/
public static String[] split(String value, String regex) {
if (value == null || value.equals("")) {
return null;
}
Vector split = new Vector();
while (true) { //循环切割
int index = value.indexOf(regex);
if (index == -1) {
if (value != null && !value.equals("")) {
split.addElement(value);
break;
}
}
split.addElement(value.substring(0, index));
value = value.substring(index + 1, value.length());
}
String[] s = new String[split.size()];
split.copyInto(s);
return s;
}
/**
* 按照指定宽度分隔字符串
* */
public static String[] split(String value, Font font, int width) {
String[] result = new String[1];
if (font.stringWidth(value) < width) {
result[0] = value;
return result;
} else {
char[] ch = value.toCharArray();
Vector lines = new Vector();
StringBuffer sb = new StringBuffer();
int w = 0;
for (int i = 0; i < ch.length; i++) {
w = w + font.charWidth(ch[i]);
sb.append(ch[i]);
if (w >= width - 12) {
lines.addElement(sb.toString());
sb.setLength(0);
w = 0;
}
}
lines.addElement(sb.toString());
result = new String[lines.size()];
lines.copyInto(result);
lines.removeAllElements();
lines = null;
return result;
}
}
/**
* 拆分字符串
* sourceStr 要拆分字符串
* maxWidth 最大宽度
* split 分隔符集合
*/
public static final Vector getSubsection(String sourceStr, int maxWidth, String split, Font font) {
Vector vector = new Vector();
String tmp = sourceStr;
int i, j;
int lastLength = 1;
int step = 0;
try {
while (!tmp.equals("")) {
i = tmp.indexOf("\n");
if (i > 0) {
if (font.stringWidth(tmp.substring(0, i - 1)) > maxWidth) {
i = -1;
}
}
if (i == -1) {
if (lastLength > tmp.length()) {
i = tmp.length();
} else {
i = lastLength;
step = font.stringWidth(tmp.substring(0, i)) > maxWidth ? -1 : 1;
if (i < tmp.length()) {
while (!(font.stringWidth(tmp.substring(0, i)) <= maxWidth && font.stringWidth(tmp.substring(0, i + 1)) > maxWidth)) {
i = i + step;
if (i == tmp.length()) {
break;
}
}
}
}
if (!split.equals("")) {
j = i;
if (i < tmp.length()) {
while (split.indexOf(tmp.substring(i - 1, i)) == -1) {
i--;
if (i == 0) {
i = j;
break;
}
}
}
}
}
lastLength = i;
vector.addElement(tmp.substring(0, i));
if (i == tmp.length()) {
tmp = "";
} else {
tmp = tmp.substring(i);
if (tmp.substring(0, 1).equals("\n")) {
tmp = tmp.substring(1);
}
}
}
} catch (Exception e) {
System.out.println("getSub:" + e);
}
return vector;
}
/**
* 文字自动换行
* string 文字内容
* x 起始坐标
* y 起始坐标
* width 文本最大宽度
* color 文字颜色
* font 字体
*/
public static final void drawString(Graphics g, String string, int x, int y, int width, int color, Font font) {
g.setColor(color);
Vector vector = getSubsection(string, width, "", font);
for (int i = 0; i < vector.size(); i++) {
g.drawString((String) vector.elementAt(i), x, y + (font.getHeight() + 2) * i + 1, 20);
}
vector = null;
}
/**
* 分割字符串显示,让菜单显示更漂亮,让界面显示的更完美^_^
* 指定width以外的内容将用"..."显示
*/
public static String devide(String value, Font font, int width) {
if (font.stringWidth(value) < width) {
return value;
}
char[] ch = value.toCharArray();
StringBuffer sb = new StringBuffer();
int w = 0;
for (int i = 0; i < ch.length; i++) {
w = w + font.charWidth(ch[i]);
sb.append(ch[i]);
if (w >= width) {
sb.append("..."); //增加几个点会美观
return sb.toString();
}
}
return sb.toString();
}
/**
* 提供常用的字符累加
* 通过操作符号"+"是很耗内存的方法,所以提供一个StringBuffer的方法
*/
public final static String append(String one, String two) {
StringBuffer sb = new StringBuffer();
sb.append(one);
sb.append(two);
return sb.toString();
}
public static boolean wrongCardNumber(String inputCardNumber) {
int key = -1;
int len = inputCardNumber.length();
if (len < 16) {
return true;
}
String tmp = inputCardNumber.substring(0, len - 1);
int[] num = new int[tmp.length()];
for (int i = 0; i < len; i++) {
if (inputCardNumber.charAt(i) < '0' && inputCardNumber.charAt(i) > '9') {
return true;
}
}
for (int i = 0; i < num.length; i++) {
num[i] = Integer.parseInt(tmp.substring(i, i + 1));
}
int total = 0;
for (int i = num.length - 1; i >= 0; i -= 2) {
total += (2 * num[i] / 10 + 2 * num[i] % 10);
}
for (int i = num.length - 2; i >= 0; i -= 2) {
total += num[i];
}
if (total % 10 == 0) {
key = 0;
} else {
key = (total / 10 + 1) * 10 - total;
}
if (key == Integer.parseInt(inputCardNumber.substring(len - 1, len))) {
return false;
}
return true;
}
//卡号4位4位显示,型如:1111-1111-1111-1111
public static String formatNumber(String input) {
int length = input.length();
StringBuffer sb = new StringBuffer();
// int j=0;
for (int i = 0; i < length; i++) {
if (i % 4 == 0 && i != 0) {
sb.append('-');
sb.append(input.charAt(i));
} else {
sb.append(input.charAt(i));
}
}
return sb.toString();
}
}
分享到:
相关推荐
"android_game android J2ME site:en.pudn.c"这部分标签揭示了该资源可能包含的内容,即关于Android游戏开发的知识,以及可能与J2ME(Java 2 Micro Edition)平台的迁移或转换相关的指导。 【描述】提到的“$兩小時...
基于java的开发源码-J2ME优化压缩PNG文件.zip 基于java的开发源码-J2ME优化压缩PNG文件.zip 基于java的开发源码-J2ME优化压缩PNG文件.zip 基于java的开发源码-J2ME优化压缩PNG文件.zip 基于java的开发源码-J2ME优化...
基于java的开发源码-J2me月光战机游戏源码.zip 基于java的开发源码-J2me月光战机游戏源码.zip 基于java的开发源码-J2me月光战机游戏源码.zip 基于java的开发源码-J2me月光战机游戏源码.zip 基于java的开发源码-J2me...
基于java的开发源码-简单模拟的J2ME潜艇大战源代码.zip 基于java的开发源码-简单模拟的J2ME潜艇大战源代码.zip 基于java的开发源码-简单模拟的J2ME潜艇大战源代码.zip 基于java的开发源码-简单模拟的J2ME潜艇大战源...
基于java的开发源码-蜀山剑侠传游戏J2ME手机版源代码.zip 基于java的开发源码-蜀山剑侠传游戏J2ME手机版源代码.zip 基于java的开发源码-蜀山剑侠传游戏J2ME手机版源代码.zip 基于java的开发源码-蜀山剑侠传游戏J2ME...
对于想学习J2ME的开发者,"[J2ME编程].(Manning).J2ME.-.Java.in.small.things.(2002)"这本书是一个很好的起点,它详细介绍了J2ME的基础知识、开发技巧和实际案例,帮助读者掌握J2ME编程技能。 总结,J2ME是Java在...
这是个人用j2me写的简单手机电话本,实现了以下功能: 1.查找 2.添加 3.删除 4.查看
这个错误表明Java虚拟机(JVM)遇到了一个它无法识别或者处理的类文件版本。在JBuilder 2006环境下开发J2ME应用时,如果你遇到了这个错误,可能是由于以下原因导致的: 1. **JDK版本不匹配**:JBuilder 2006可能与...
1. J2ME:Java 2 Micro Edition开发 2. 游戏开发:涉及游戏编程和设计 3. 俄罗斯方块:游戏类型 4. 源码:代码可读性与学习资源 【压缩包子文件的文件名称列表】: 1. output.txt:这可能是一个日志文件,记录了程序...
【标题】"基于Java的J2me月光战机游戏源码.zip" 提供的是一个使用Java编程语言开发的J2ME(Java 2 Micro Edition)平台上的游戏项目,名为“月光战机”。J2ME是Java的一个子集,主要用于移动设备、嵌入式系统和智能...
1. "funambol-j2me-common-6.5.10.zip":这是Funambol J2ME平台的通用组件,包含了各种基础类和工具,它们为PIM数据处理提供了一般性的支持。这些通用组件可能包括网络通信、数据编码解码、错误处理等功能,为整个...
在过去的几十年里,多种移动开发平台和技术相继涌现,其中包括Java 2 Micro Edition (J2ME) 和 Android。这两种平台分别代表了不同阶段的移动开发历史,各有特色与优势。本文将从多个角度对J2ME和Android进行比较...
10. **调试与测试**:Eclipse 和 NetBeans 等 IDE 提供了 J2ME 开发支持,包括模拟器和设备调试工具,帮助开发者在不同平台上测试和调试应用程序。 总结来说,"huoying.rar" 可能是一个包含 J2ME 游戏源码的压缩包...
- **j2ME**:Java Micro Edition是一种轻量级的Java平台,主要用于嵌入式设备和移动设备,如手机。它包括一套精简的Java虚拟机和一些特定于设备的API。 - **MMS**:多媒体消息服务允许用户在移动设备间发送和接收...
标题 "java源码:J2ME优化压缩PNG文件.rar" 提供了我们即将探讨的核心主题——使用Java语言在J2ME(Java 2 Micro Edition)平台上优化和压缩PNG(Portable Network Graphics)图像文件。J2ME是Java的一个子集,主要...
Java源码:J2ME月光战机游戏源码是一个经典的编程学习资源,它展示了如何使用Java语言和J2ME(Java 2 Micro Edition)平台来开发一款简单的移动游戏。J2ME是Java的一个子集,专门用于嵌入式设备和移动设备,如早期的...
J2ME手机游戏编程入门.iso J2ME手机游戏编程入门.iso
标题中的"j2me satas-crypto.rar"表明这是一个与Java 2 Micro Edition(J2ME)相关的压缩文件,其中包含的"satas-crypto"可能是指某种特定的加密或安全相关的技术。J2ME是Java平台的一个子集,主要用于嵌入式系统,...
【标题】: "基于Java的简单模拟的J2ME潜艇大战源代码.zip" 涉及的主要知识点是Java编程语言以及Java Micro Edition (J2ME) 平台的应用开发。J2ME是一种针对嵌入式设备和移动设备的Java平台,它允许开发者创建可以在...
- **字符串操作**:Java的`String`类提供了各种字符串操作方法,如`concat()`、`substring()`、`indexOf()`等,用于拼接、截取和查找文本。 - **格式化**:J2ME可能需要对数字、日期等进行格式化显示,这可以通过`...