`

j2me工具类:TextUtil.java

    博客分类:
  • j2me
阅读更多
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-development.rar_android_game android J2ME_site:en.pudn.c

    "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优化压缩PNG文件.zip 基于java的开发源码-J2ME优化...

    基于java的开发源码-J2me月光战机游戏源码.zip

    基于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潜艇大战源代码.zip 基于java的开发源码-简单模拟的J2ME潜艇大战源...

    基于java的开发源码-蜀山剑侠传游戏J2ME手机版源代码.zip

    基于java的开发源码-蜀山剑侠传游戏J2ME手机版源代码.zip 基于java的开发源码-蜀山剑侠传游戏J2ME手机版源代码.zip 基于java的开发源码-蜀山剑侠传游戏J2ME手机版源代码.zip 基于java的开发源码-蜀山剑侠传游戏J2ME...

    [J2ME编程].(Manning).J2ME.-.Java.in.small.things.(2002)

    对于想学习J2ME的开发者,"[J2ME编程].(Manning).J2ME.-.Java.in.small.things.(2002)"这本书是一个很好的起点,它详细介绍了J2ME的基础知识、开发技巧和实际案例,帮助读者掌握J2ME编程技能。 总结,J2ME是Java在...

    j2me 手机 电话本 *..java

    这是个人用j2me写的简单手机电话本,实现了以下功能: 1.查找 2.添加 3.删除 4.查看

    jbuilder 2006 j2me ALERT: java/lang/ClassFormatError: Bad version information.

    这个错误表明Java虚拟机(JVM)遇到了一个它无法识别或者处理的类文件版本。在JBuilder 2006环境下开发J2ME应用时,如果你遇到了这个错误,可能是由于以下原因导致的: 1. **JDK版本不匹配**:JBuilder 2006可能与...

    archive_j2me游戏俄罗斯方块源码.zip.zip

    1. J2ME:Java 2 Micro Edition开发 2. 游戏开发:涉及游戏编程和设计 3. 俄罗斯方块:游戏类型 4. 源码:代码可读性与学习资源 【压缩包子文件的文件名称列表】: 1. output.txt:这可能是一个日志文件,记录了程序...

    基于Java的J2me月光战机游戏源码.zip

    【标题】"基于Java的J2me月光战机游戏源码.zip" 提供的是一个使用Java编程语言开发的J2ME(Java 2 Micro Edition)平台上的游戏项目,名为“月光战机”。J2ME是Java的一个子集,主要用于移动设备、嵌入式系统和智能...

    funambol-j2me-api-6.5.1000.zip_PIM_phone_pim java

    1. "funambol-j2me-common-6.5.10.zip":这是Funambol J2ME平台的通用组件,包含了各种基础类和工具,它们为PIM数据处理提供了一般性的支持。这些通用组件可能包括网络通信、数据编码解码、错误处理等功能,为整个...

    开发中j2me与android的比较.pdf

    在过去的几十年里,多种移动开发平台和技术相继涌现,其中包括Java 2 Micro Edition (J2ME) 和 Android。这两种平台分别代表了不同阶段的移动开发历史,各有特色与优势。本文将从多个角度对J2ME和Android进行比较...

    huoying.rar_j2me_www.huoying .c

    10. **调试与测试**:Eclipse 和 NetBeans 等 IDE 提供了 J2ME 开发支持,包括模拟器和设备调试工具,帮助开发者在不同平台上测试和调试应用程序。 总结来说,"huoying.rar" 可能是一个包含 J2ME 游戏源码的压缩包...

    j2ME MMS彩信开发API .zip

    - **j2ME**:Java Micro Edition是一种轻量级的Java平台,主要用于嵌入式设备和移动设备,如手机。它包括一套精简的Java虚拟机和一些特定于设备的API。 - **MMS**:多媒体消息服务允许用户在移动设备间发送和接收...

    java源码:J2ME优化压缩PNG文件.rar

    标题 "java源码:J2ME优化压缩PNG文件.rar" 提供了我们即将探讨的核心主题——使用Java语言在J2ME(Java 2 Micro Edition)平台上优化和压缩PNG(Portable Network Graphics)图像文件。J2ME是Java的一个子集,主要...

    java源码:J2me月光战机游戏源码.rar

    Java源码:J2ME月光战机游戏源码是一个经典的编程学习资源,它展示了如何使用Java语言和J2ME(Java 2 Micro Edition)平台来开发一款简单的移动游戏。J2ME是Java的一个子集,专门用于嵌入式设备和移动设备,如早期的...

    J2ME手机游戏编程入门.iso

    J2ME手机游戏编程入门.iso J2ME手机游戏编程入门.iso

    j2me satas-crypto.rar

    标题中的"j2me satas-crypto.rar"表明这是一个与Java 2 Micro Edition(J2ME)相关的压缩文件,其中包含的"satas-crypto"可能是指某种特定的加密或安全相关的技术。J2ME是Java平台的一个子集,主要用于嵌入式系统,...

    基于Java的简单模拟的J2ME潜艇大战源代码.zip

    【标题】: "基于Java的简单模拟的J2ME潜艇大战源代码.zip" 涉及的主要知识点是Java编程语言以及Java Micro Edition (J2ME) 平台的应用开发。J2ME是一种针对嵌入式设备和移动设备的Java平台,它允许开发者创建可以在...

    Java J2ME学习实例源码集.rar

    - **字符串操作**:Java的`String`类提供了各种字符串操作方法,如`concat()`、`substring()`、`indexOf()`等,用于拼接、截取和查找文本。 - **格式化**:J2ME可能需要对数字、日期等进行格式化显示,这可以通过`...

Global site tag (gtag.js) - Google Analytics