关于java截取问题,求指导

a20081225 2014-09-27 04:06:14
一段汉字,如:“你吃饭了吗,我们去吃饭吧。”按两个汉字截取这段文字,比如“你吃”、“吃饭”、“饭了”,以此类推,并且不截取标点。求大神指教。
...全文
197 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
東刀人 2014-09-28
  • 打赏
  • 举报
回复
引用 5 楼 magi1201 的回复:
String str = "你吃饭了吗,我们去吃饭吧。";
    String regex = "[^\u4e00-\u9fa5]+";
    String str2 = str.replaceAll(regex, "");
    // 3楼答过了,就是把i=i+2,换为i++。每次跳一个字符就可以了
    for (int i = 0; i < str2.length(); i=i+2) { 
        if (i+2 < str2.length()) {
            System.out.println(str2.subSequence(i, i+2));
        }
        else {
            System.out.println(str2.subSequence(i, i+1));
        }
    }
楼上正解!
String str = "你吃饭了吗,我们去吃饭吧。";
        String regex = "[^\u4e00-\u9fa5]+";
        String str2 = str.replaceAll(regex, "");
        for (int i = 0; i < str2.length(); i=i+1) { 
            if (i+1 < str2.length()) {
                System.out.println(str2.subSequence(i, i+2));
            }
            else {
                System.out.println(str2.subSequence(i, i+1));
            }
        }
姜小白- 2014-09-28
  • 打赏
  • 举报
回复
String str = "你吃饭了吗,我们去吃饭吧。";
    String regex = "[^\u4e00-\u9fa5]+";
    String str2 = str.replaceAll(regex, "");
    // 3楼答过了,就是把i=i+2,换为i++。每次跳一个字符就可以了
    for (int i = 0; i < str2.length(); i=i+2) { 
        if (i+2 < str2.length()) {
            System.out.println(str2.subSequence(i, i+2));
        }
        else {
            System.out.println(str2.subSequence(i, i+1));
        }
    }
zebro1573 2014-09-28
  • 打赏
  • 举报
回复
先把标点去掉,然后截取
放纵的青春 2014-09-28
  • 打赏
  • 举报
回复
要养成自己解决问题的习惯
放纵的青春 2014-09-28
  • 打赏
  • 举报
回复
这个·· 自己开动下脑筋应该能解决的啊
scott_129 2014-09-27
  • 打赏
  • 举报
回复
引用 2 楼 a20081225 的回复:
我的意思是,把这段话截取成:你吃、吃饭、饭了、了吗、以此类推。不是:你吃、饭了、吗我……。求指教
这是一样的啊,你把1楼的代码稍作修改

for (int i = 0; i < str2.length()-1; i++) {
        if (i+2 < str2.length()) {
            System.out.println(str2.subString(i, i+2));
        }
        else {
            System.out.println(str2.subString(i));
        }
subSequence的效果跟subString效果一样
a20081225 2014-09-27
  • 打赏
  • 举报
回复
我的意思是,把这段话截取成:你吃、吃饭、饭了、了吗、以此类推。不是:你吃、饭了、吗我……。求指教
姜小白- 2014-09-27
  • 打赏
  • 举报
回复
通过正则,先替换掉非汉字的字符 然后 按照两个两个的来截取,处理好最后一个单字符的情况

	    String str = "你吃饭了吗,我们去吃饭吧。";
	    String regex = "[^\u4e00-\u9fa5]+";
	    String str2 = str.replaceAll(regex, "");
	    for (int i = 0; i < str2.length(); i=i+2) {
	        if (i+2 < str2.length()) {
	            System.out.println(str2.subSequence(i, i+2));
	        }
	        else {
	            System.out.println(str2.subSequence(i, i+1));
	        }
	    }

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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