String[] split(String regex)

根据给定的正则表达式的匹配来拆分此字符串。

注意:竖线"|" 要转义写成 "\\|",还有一些其他的特殊字符是需要转义的 如 \\. \\? 等

1.用多个标点拆分

strs = str.split("[、,。;?!,.;?!]");

strs = str.split("、|,|。|;|?|!|,|\\.|;|\\?|!|]");

2.还想保留分隔符,

笨方法:在要拆分的标点后边加一个新的拆分符,用新的拆分符拆分

//这么替换,是为了拆分后,还能保存标点符号,//可再优化

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("\\|");

3.还想单独保留分隔符,

自己写了个方法,仅供参考:

用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", "");

Java多个分隔符indexof,java split用多个标点符号拆分,并保留分隔符相关推荐

  1. java split保留分隔_String split如何保留分隔符

    String split方法很常用,比如"1,2,3,4,5".split(",")返回["1","2","3 ...

  2. java string()函数_转载java String.split()函数的用法详解

    转载java String.split()函数的用法详解 如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!在java.lang包中有String.split()方法的原型是: p ...

  3. java 拆分句子,并保留分隔符

    BreakUpSentence.java package com.example.demo.util;import java.util.ArrayList; import java.util.Arra ...

  4. JAVA和javascrito_JAVA 和JavaScript的split方法异同

    Split的方法很常用,除了str.split("regex"),其实还可以多传一个参数:str.split("regex", limit).但是要注意,Jav ...

  5. Java LinkedList公共int indexOf(Object o)方法(带示例)

    LinkedList公共int indexOf(Object o)方法 (LinkedList public int indexOf(Object o) method) This method is ...

  6. 【Java 8 新特性】Java 8 Util API: StringJoiner 详解 | 拼接字符串添加分隔符、前缀和后缀

    Java 8 Util API: StringJoiner 详解 StringJoiner(CharSequence d) StringJoiner.add(CharSequence element) ...

  7. indexof java 返回值_Java之indexOf()方法

    Java之indexOf()方法 1.方法介绍 (1)indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引 (2)indexOf(String str) 返回指定子字符串在此字符 ...

  8. Java 字符串分割成数组,保留分隔符

    在日常开发中,经常会用到字符串分割,一般使用split方法,但是这种简单的方法不能保留分割符号,于是自己动手造轮子,记录一个字符传分割方法,适配单个字符分割,多个字符分割,均可保留分割符. 具体实现代 ...

  9. Java竞赛目的_ACM竞赛 Java编程小结

    1.字符串的长度 String str = new String(" abcd");int length = str.length(); 2.数组的长度.排序 2.1对于 a[][ ...

最新文章

  1. Mysql 架构及优化之-定时计划任务
  2. python散点图拟合曲线-使用python通过点拟合曲线
  3. Py之qrcode:调用python的qrcode库两种方式生成二维码、带logo的二维码
  4. Java 添加播放MIDI音乐
  5. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1066:满足条件的数累加
  6. 在 Delphi 下使用 DirectSound (6): 按文件自己的格式(TWaveFormatEx)播放
  7. uniapp实现瀑布流基本写法
  8. OSG仿真案例(5)——模型的平移、缩放、旋转
  9. html圆如何找到垂直中心线,一种用于找中心线及圆心的装置的制作方法
  10. 币安Binance API
  11. python 主线程_Python 主线程捕获子线程异常
  12. SQL中常用的日期函数
  13. oracle 数据备份视频,赵强老师:Oracle数据库(之四):备份与恢复视频课程
  14. python打包生成so文件
  15. julia语言 python解释器_新一代科学计算语言Julia以及开发环境搭建教程
  16. cobar mysql 性能_Cobar
  17. 更新驱动后计算机不能开机,(图文)Win10更新显卡驱动后无法开机进入系统
  18. 世界上最大的计算机硬盘,全球最大机械硬盘:8碟12TB、充氦封装
  19. 解决xdp计算ip头checksum报错
  20. leetcode 179.最大数

热门文章

  1. html根据矩形确定四值坐标,熬夜总结了 “HTML5画布” 的知识点(共10条)
  2. excel计算机考试标注星期几,Excel 根据日期标注中文及英文的星期几
  3. generator代码自动生成工具(动态生成注释、类注解、方法注解等)适用于swagger等需要配置实体类的场景
  4. 淘宝直播视频下载软件分享地瓜网络技术
  5. 开源html5小游戏6,html5简易小游戏 - strip_liu的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. 剑指offer-做题:1-3
  7. 解读 iOS(马甲包) 组件化与路由的本质
  8. “HTTP Status 404 - No result defined for action ****** and result result”错误解决方法
  9. 软件生命周期阶段有几个?常见软件生命周期模型有哪些?
  10. buuctf(pwn)