?
String[] split(String regex)
根据给定的正则表达式的匹配来拆分此字符串。
?
注意:竖线"|" 要转义写成 "\\|",还有一些其他的特殊字符是需要转义的 如 \\. \\? 等
?
1.用多个标点拆分
strs = str.split("[、,。;?!,.;?!]");
strs = str.split("、|,|。|;|?|!|,|\\.|;|\\?|!|]"); //这个没试,呵呵
?
2.还想保留分隔符,
笨方法:在要拆分的标点后边加一个新的拆分符,用新的拆分符拆分
class="java" name="code">//这么替换,是为了拆分后,还能保存标点符号,//可再优化 line = line.replaceAll("、", "、|"); line = line.replaceAll(",", ",|"); line = line.replaceAll("。", "。|"); line = line.replaceAll(";", ";|"); line = line.replaceAll("?", "?|"); line = line.replaceAll("!", "!|"); line = line.replaceAll(",", ",|"); line = line.replaceAll("\\.", ".|"); line = line.replaceAll(";", ";|"); line = line.replaceAll("\\?", "?|"); line = line.replaceAll("!", "!|"); strs = line.split("\\|");
?
感觉这个有点土,自己写了个方法,仅供参考:
用StringBuilder,一个一个字符的去拼。
phrase = new Phrase(str,String.valueOf(ch),l+1,++no);
Phrase 是自定义类,第一个参数是短句,第二个参数是标点
?
reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath),encoding)); //考虑到编码格式 String line; StringBuilder sb; //int num = 0; //总句码 int l=0; //行序号 while((line = reader.readLine()) != null){ //line = new String(line.getBytes("ISO-8859-1"),"UTF-8"); //System.out.println(line); //line = line.replaceAll("[,。;?!,.;?!]", "|"); line = line.replaceAll("| ", ""); sb = new StringBuilder(); String str=""; //String punctuation = ""; //line = ",abcdev,";//abcdev,asdfasdf.asfejfl;3f23f!;efefef"; char[] chars = line.toCharArray(); int no = 0; for(char ch : chars){ if(ch == 65279){ //'' //'' //65279 utf-8 bom continue; } if("、,。;?!,.;?!".indexOf(ch) == -1){ sb.append(ch); } else { //System.out.println(sb.toString()+ch); str = sb.toString(); if(str.length()>0){ phrase = new Phrase(str,String.valueOf(ch),l+1,++no); phraseList.add(phrase); } sb = new StringBuilder(); } } //后边的没标点的短句 str = sb.toString(); if(str.length()>0){ //System.out.println(str); phrase = new Phrase(str,"",l+1,++no); phraseList.add(phrase); } l++; } reader.close();
?
别人的解决方法
http://www.iteye.com/problems/27173
/*需要分割的文章*/ String str = "第一句。第二句!第三句:第四句;第五句。"; /*正则表达式:句子结束符*/ String regEx=":|。|!|;"; Pattern p =Pattern.compile(regEx); Matcher m = p.matcher(str); /*按照句子结束符分割句子*/ String[] words = p.split(str); /*将句子结束符连接到相应的句子后*/ if(words.length > 0) { int count = 0; while(count < words.length) { if(m.find()) { words[count] += m.group(); } count++; } } /*输出结果*/ for(int index = 0; index < words.length; index++) { String word = words[index]; System.out.println("word = " + word); }
???
其他的:
替换中英文空格为空
line = line.replaceAll("| ", "");
?
替换回车换行为空,注意中间写的是或,因为有的只有一个,有的顺序不同
line = line.replaceAll("\n|\r", "");
?
?