Java多个分隔符indexof,java split用多个标点符号拆分,并保留分隔符
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用多个标点符号拆分,并保留分隔符相关推荐
- java split保留分隔_String split如何保留分隔符
String split方法很常用,比如"1,2,3,4,5".split(",")返回["1","2","3 ...
- java string()函数_转载java String.split()函数的用法详解
转载java String.split()函数的用法详解 如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!在java.lang包中有String.split()方法的原型是: p ...
- java 拆分句子,并保留分隔符
BreakUpSentence.java package com.example.demo.util;import java.util.ArrayList; import java.util.Arra ...
- JAVA和javascrito_JAVA 和JavaScript的split方法异同
Split的方法很常用,除了str.split("regex"),其实还可以多传一个参数:str.split("regex", limit).但是要注意,Jav ...
- Java LinkedList公共int indexOf(Object o)方法(带示例)
LinkedList公共int indexOf(Object o)方法 (LinkedList public int indexOf(Object o) method) This method is ...
- 【Java 8 新特性】Java 8 Util API: StringJoiner 详解 | 拼接字符串添加分隔符、前缀和后缀
Java 8 Util API: StringJoiner 详解 StringJoiner(CharSequence d) StringJoiner.add(CharSequence element) ...
- indexof java 返回值_Java之indexOf()方法
Java之indexOf()方法 1.方法介绍 (1)indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引 (2)indexOf(String str) 返回指定子字符串在此字符 ...
- Java 字符串分割成数组,保留分隔符
在日常开发中,经常会用到字符串分割,一般使用split方法,但是这种简单的方法不能保留分割符号,于是自己动手造轮子,记录一个字符传分割方法,适配单个字符分割,多个字符分割,均可保留分割符. 具体实现代 ...
- Java竞赛目的_ACM竞赛 Java编程小结
1.字符串的长度 String str = new String(" abcd");int length = str.length(); 2.数组的长度.排序 2.1对于 a[][ ...
最新文章
- Mysql 架构及优化之-定时计划任务
- python散点图拟合曲线-使用python通过点拟合曲线
- Py之qrcode:调用python的qrcode库两种方式生成二维码、带logo的二维码
- Java 添加播放MIDI音乐
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1066:满足条件的数累加
- 在 Delphi 下使用 DirectSound (6): 按文件自己的格式(TWaveFormatEx)播放
- uniapp实现瀑布流基本写法
- OSG仿真案例(5)——模型的平移、缩放、旋转
- html圆如何找到垂直中心线,一种用于找中心线及圆心的装置的制作方法
- 币安Binance API
- python 主线程_Python 主线程捕获子线程异常
- SQL中常用的日期函数
- oracle 数据备份视频,赵强老师:Oracle数据库(之四):备份与恢复视频课程
- python打包生成so文件
- julia语言 python解释器_新一代科学计算语言Julia以及开发环境搭建教程
- cobar mysql 性能_Cobar
- 更新驱动后计算机不能开机,(图文)Win10更新显卡驱动后无法开机进入系统
- 世界上最大的计算机硬盘,全球最大机械硬盘:8碟12TB、充氦封装
- 解决xdp计算ip头checksum报错
- leetcode 179.最大数
热门文章
- html根据矩形确定四值坐标,熬夜总结了 “HTML5画布” 的知识点(共10条)
- excel计算机考试标注星期几,Excel 根据日期标注中文及英文的星期几
- generator代码自动生成工具(动态生成注释、类注解、方法注解等)适用于swagger等需要配置实体类的场景
- 淘宝直播视频下载软件分享地瓜网络技术
- 开源html5小游戏6,html5简易小游戏 - strip_liu的个人空间 - OSCHINA - 中文开源技术交流社区...
- 剑指offer-做题:1-3
- 解读 iOS(马甲包) 组件化与路由的本质
- “HTTP Status 404 - No result defined for action ****** and result result”错误解决方法
- 软件生命周期阶段有几个?常见软件生命周期模型有哪些?
- buuctf(pwn)