最代码官方的gravatar头像
最代码官方 2016-09-19 11:29:31

java字符串截取substring的自定义需求代码片段实现:中文1,英文占0.5的算法实现

今天有个需求要实现字符串截取,但是产品需求比较特殊,中文算1个长度,英文,数字等算0.5个,比如:

中1中2中3

截取2个的话是

中1

截取3个的话是

中1中

以此类推。

分享下代码片段:

public static boolean isChinese(String str) {
		String regEx = "[\u4e00-\u9fa5]";
		Pattern pat = Pattern.compile(regEx);
		Matcher matcher = pat.matcher(str);
		boolean flg = false;
		if (matcher.find())
			flg = true;

		return flg;
	}

public static String complexSubstring(String value, double len) {
        String ret = "";
        String[] _arr = value.split("");
        // 第一个字符是无效的,去掉即可
        _arr[0] = null;
        double size = 0;
        for (String s : _arr) {
            if (s == null) {
                continue;
            }
            if (isChinese(s)) {
                size += 1;
            } else {
                size += 0.5;
            }
            ret += s;
            if (size >= len) {
                break;
            }
        }
        return ret;
    }
public static void main(String[] args) {
		String string = "中1中2中3";
		System.out.println(complexSubstring(string, 2));
		System.out.println(complexSubstring(string, 3));
		System.out.println(complexSubstring(string, 5));
	}

执行效果如下图

java字符串截取substring的自定义需求代码片段实现:中文1,英文占0.5的算法实现


打赏

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友