中文括号匹配问题

墨笙弘一
Java领域优质创作者
2017-12-26 01:00:35
有多个类似于下面的字符串,我需要对每个这样的字符串从第二个圆括号开始换行,但是用下面方法,总是匹配的圆括号位置不对,圆括号是中文的
package com.chapter010;


public class NumberTest {

public static void main(String[] args) {
String str = "(1)Hb>100g/L,食物补充为主。含铁丰富的食物如动物肝脏、动物血、牛肉、瘦猪肉、香菇、黑木耳等;(2)4-6个月的儿童及时添加辅食。铁强化米粉等。6个月以后每周至少一次含铁丰富的食物,动物的肝、血。(3)补充维生素C含量丰富的食物,帮助铁吸收。如橘子、甜橙、猕猴桃、葡萄和深色蔬菜等。(4)宣传和提倡母乳喂养,母乳喂养儿,乳母应注意摄食含铁的丰富的食物,乳母贫血应及时治疗。(5)育锻炼和户外活动,每天1-2小时,增强体质。(6) 养成良好的饮食习惯,避免挑食、偏食。(7) 服用铁剂以饭后为宜,勿与牛奶、钙粉、咖啡、浓茶同服。(8) 如Hb<100g/L,铁剂治疗和食物治疗。";
StringBuffer sb = new StringBuffer(str);
for(int i=0;i<str.length();i++){
if('(' == str.charAt(i)){
sb.insert(i, "\n");
}
}
System.out.println(sb.toString());
}
}


...全文
300 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
墨笙弘一 2017-12-26
  • 打赏
  • 举报
回复
谢谢楼上两位大神
墨笙弘一 2017-12-26
  • 打赏
  • 举报
回复
引用 3 楼 zy1404 的回复:
因为 你的插入\n,每一次插入 ,那么在stringBuffer 中的位置 都会往后移动 一位
嗯 想明白了
「已注销」 2017-12-26
  • 打赏
  • 举报
回复
String str = "...";
char[] arr = str.toCharArray();
StringBuffer sb = new StringBuffer();
for (char c : arr) {
	if ((c == '(') && (sb.length() > 0)) {
		sb.append(System.lineSeparator());
	}
	sb.append(c);
}
System.out.println(sb.toString());
  • 打赏
  • 举报
回复
因为 你的插入\n,每一次插入 ,那么在stringBuffer 中的位置 都会往后移动 一位
墨笙弘一 2017-12-26
  • 打赏
  • 举报
回复
引用 1 楼 zy1404 的回复:为什么要i+k++
 public static void main(String[
args) { String str = "(1)Hb>100g/L,食物补充为主。含铁丰富的食物如动物肝脏、动物血、牛肉、瘦猪肉、香菇、黑木耳等;(2)4-6个月的儿童及时添加辅食。铁强化米粉等。6个月以后每周至少一次含铁丰富的食物,动物的肝、血。(3)补充维生素C含量丰富的食物,帮助铁吸收。如橘子、甜橙、猕猴桃、葡萄和深色蔬菜等。(4)宣传和提倡母乳喂养,母乳喂养儿,乳母应注意摄食含铁的丰富的食物,乳母贫血应及时治疗。(5)育锻炼和户外活动,每天1-2小时,增强体质。(6) 养成良好的饮食习惯,避免挑食、偏食。(7) 服用铁剂以饭后为宜,勿与牛奶、钙粉、咖啡、浓茶同服。(8) 如Hb<100g/L,铁剂治疗和食物治疗。"; StringBuffer sb = new StringBuffer(str); int k=0; for(int i=0;i<str.length();i++){ if('(' == str.charAt(i)){ sb.insert(i+k++, "\n"); } } System.out.println(sb.toString()); }
结果: (1)Hb>100g/L,食物补充为主。含铁丰富的食物如动物肝脏、动物血、牛肉、瘦猪肉、香菇、黑木耳等; (2)4-6个月的儿童及时添加辅食。铁强化米粉等。6个月以后每周至少一次含铁丰富的食物,动物的肝、血。 (3)补充维生素C含量丰富的食物,帮助铁吸收。如橘子、甜橙、猕猴桃、葡萄和深色蔬菜等。 (4)宣传和提倡母乳喂养,母乳喂养儿,乳母应注意摄食含铁的丰富的食物,乳母贫血应及时治疗。 (5)育锻炼和户外活动,每天1-2小时,增强体质。 (6) 养成良好的饮食习惯,避免挑食、偏食。 (7) 服用铁剂以饭后为宜,勿与牛奶、钙粉、咖啡、浓茶同服。 (8) 如Hb<100g/L,铁剂治疗和食物治疗。
  • 打赏
  • 举报
回复
 public static void main(String[] args) {
        String str = "(1)Hb>100g/L,食物补充为主。含铁丰富的食物如动物肝脏、动物血、牛肉、瘦猪肉、香菇、黑木耳等;(2)4-6个月的儿童及时添加辅食。铁强化米粉等。6个月以后每周至少一次含铁丰富的食物,动物的肝、血。(3)补充维生素C含量丰富的食物,帮助铁吸收。如橘子、甜橙、猕猴桃、葡萄和深色蔬菜等。(4)宣传和提倡母乳喂养,母乳喂养儿,乳母应注意摄食含铁的丰富的食物,乳母贫血应及时治疗。(5)育锻炼和户外活动,每天1-2小时,增强体质。(6)  养成良好的饮食习惯,避免挑食、偏食。(7)  服用铁剂以饭后为宜,勿与牛奶、钙粉、咖啡、浓茶同服。(8)  如Hb<100g/L,铁剂治疗和食物治疗。";
        StringBuffer sb = new StringBuffer(str);
        int k=0;
        for(int i=0;i<str.length();i++){
            if('(' == str.charAt(i)){
                sb.insert(i+k++, "\n");
            }
        }
        System.out.println(sb.toString());
    }
结果: (1)Hb>100g/L,食物补充为主。含铁丰富的食物如动物肝脏、动物血、牛肉、瘦猪肉、香菇、黑木耳等; (2)4-6个月的儿童及时添加辅食。铁强化米粉等。6个月以后每周至少一次含铁丰富的食物,动物的肝、血。 (3)补充维生素C含量丰富的食物,帮助铁吸收。如橘子、甜橙、猕猴桃、葡萄和深色蔬菜等。 (4)宣传和提倡母乳喂养,母乳喂养儿,乳母应注意摄食含铁的丰富的食物,乳母贫血应及时治疗。 (5)育锻炼和户外活动,每天1-2小时,增强体质。 (6) 养成良好的饮食习惯,避免挑食、偏食。 (7) 服用铁剂以饭后为宜,勿与牛奶、钙粉、咖啡、浓茶同服。 (8) 如Hb<100g/L,铁剂治疗和食物治疗。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧