Java在字符串,每隔指定的字符数插入指定的符号

获取一段字符串,是中英文数字混合的,在页面上想要达到一定长度就换行,然而中文和英文和数字的长度不一致,不能单一的用length来判断,现在博主写了如下代码供参考:

现实现的效果是数字和英文算长度1,汉字算2,达到8位就加<br/>去换行

public void testInsert()
	{
		String originStr = "12今天3真a是4B个好Cd日子";
		List<Integer> indexs = new ArrayList<>();
		int len = 0;
		for (int i = 0; i < originStr.length(); i++)
		{
			String regContent = originStr.substring(i, i+1);
			boolean isChina = regContent.matches("[\u4E00-\u9FA5]");
			boolean isEnglish = regContent.matches("[A-Za-z]");
			boolean isNum = regContent.matches("[0-9]");
			if (isChina)
			{
//				printToConsole(regContent + " is China!");
				len += 2;
			}
			else if (isEnglish)
			{
//				printToConsole(regContent + " is English!");
				len += 1;
			}
			else if (isNum)
			{
//				printToConsole(regContent + " is Num!");
				len += 1;
			}
			else
			{
//				printToConsole(regContent+"---未知");
			}
			if (len>=8)
			{
				indexs.add(i);
				len = 0;
			}
		}
		String lastStr = "";
		if (indexs.size() > 0)
		{
			for (int i = 0; i < (indexs.size()+1); i++)
			{
				if (i == 0)
				{
					lastStr +=  originStr.substring(0, indexs.get(i)+1);
					lastStr += "<br />";
				}
				else if (i*8 < originStr.length())
				{
					lastStr +=  originStr.substring(indexs.get(i-1)+1, indexs.get(i)+1);
					lastStr += "<br />";
				}
				else
				{
					lastStr +=  originStr.substring(indexs.get(i-1)+1, originStr.length());
				}
			}
		}
		printToConsole(indexs);
		printToConsole(originStr);
		printToConsole(lastStr);
	}


其中printToConsole方法是自己封装的打印到控制台的方法,代码如下


 protected void printToConsole(Object obj)
    {
        System.err.println(JSONObject.toJSONString(obj));
    }


最后的打印结果如下:

[5,11]
"12今天3真a是4B个好Cd日子"
"12今天3真<br />a是4B个好<br />Cd日子"

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值