您的位置:首页 > 编程语言 > Java开发

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

2016-09-12 14:57 357 查看
获取一段字符串,是中英文数字混合的,在页面上想要达到一定长度就换行,然而中文和英文和数字的长度不一致,不能单一的用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日子"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐