JAVA 如何用部分空格分割字符串,急!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA 如何用部分空格分割字符串,急!相关的知识,希望对你有一定的参考价值。

比如:Jun 10 04:03:20 iomc2312 时间里的空格不分割,但是时间与iomc231要分割开来
这只是个例子,主要是在一行字符串里,我需要分割字符串放到arraylist中去,但是只用split的话所有的空格都会被分割,而有些内容本身含有空格,不能被分割的,就这个比较纠结。数据是从服务器读取的,本身不能改

String a="Jun 10 04:03:20 iomc2312";
String[] b = a.split("(?<=\\D)\\s+(?=\\d)|(?<=\\d)\\s+(?!\\d)");追问

?<=\\D)\\s+(?=\\d)|(?<=\\d)\\s+(?!\\d)这个转义字符的部分能否解释下,谢谢

追答

按照你目前的示列就是
1.前面不是数字后面是数字的
2.前面是数字后面不是数字的就拆。

追问

这只是个例子,不一定是这样的,我给你看个具体的吧
Jun 10 04:03:21 iomc2312 ran_pm_collect: ER thr=3062713232 PMCollect_Manager.cpp, line6255: PMCollect_Manager::getIORonPMServer(): ran_pm_collect ERR_00020401: Request: Connection Error(Failed to get IOR.(PF_PM_DBMgr/PMCategoryTableOpeIF))

追答

那你也要指定一个规则,什么样的才拆分

追问

Jun 10 04:03:21
iomc2312
ran_pm_collect: ER
thr=3062713232 PMCollect_Manager.cpp, line6255: PMCollect_Manager::getIORonPMServer(): ran_pm_collect
ERR_00020401: Request: Connection Error(Failed to get IOR.(PF_PM_DBMgr/PMCategoryTableOpeIF))
这么分割

追答

你这个有点太范化了,能保证空格前面后面都有哪些字母不。
列入thr,PMCollect,ERR都是必须有的

String a="Jun 10 04:03:21 iomc2312 ran_pm_collect: ER thr=3062713232 PMCollect_Manager.cpp, line6255: PMCollect_Manager::getIORonPMServer(): ran_pm_collect ERR_00020401: Request: Connection Error(Failed to get IOR.(PF_PM_DBMgr/PMCategoryTableOpeIF))";
String[] b = a.split("\\s+(?=(iom|thr|PMCollect_Manager::|ERR))");

追问

嗯,这个方法行得通,稍微改下OK了,分给你了~

参考技术A String a="Jun 10 04:03:20 iomc2312";
int i = a.lastIndexOf(" ");
System.out.println(a.substring(0, i));
System.out.println(a.substring(i+1));
参考技术B String中的 indexof取最后一个“ ”的位置 然后用subString 取的2个 子字符串追问

我去试试看

参考技术C 不明白什么意思,时间字符和iomc加起来不就行,时间字符后面或者iomc前加个空格不就行了 参考技术D formatter 第5个回答  2012-06-13 日期格式化问题吧?说说你要分割的理由。要是日期格式化用SimpleDateFormat追问

就是以空格分割字符串的时候要保留内容本身含有的空格,如:name sex home address中的home address是连一起的,中间的空格不能被分割

追答

分了之后再组装吧,你怎么能确定那个空格是你要使用分割的,是主要问题

追问

就是这个问题呀,我需要取出来与结构体中的数据做比较,原来配置文件是用逗号分割的所以不会有这个问题,但是服务器的日志数据是以空格分割的

第6个回答  2012-06-13 这个问题无解 你不知道哪个空格是你要保留的 要保留的空格和作为分隔符的空格还是一样的 你总点有个规则才能处理 想想还有什么规则追问

服务器的日志就是这么写的,我知道哪个需要哪个不要,因为分割之后我会把数据扔进arraylist当中

如何用逗号和空格java分割表达式

例如,源数据:

some blabla, sentence, example

等待结果:

[some,blabla,sentence,example]

我可以用逗号分隔,但不知道如何用逗号和空格分割?

我的源代码,到目前为止:

string.split("\s*,\s*")
答案

您可以使用一组字符作为分隔符,如Pattern中所述

String string = "One step    at,,a, time ,.";
System.out.println( Arrays.toString( string.split( "[\s,]+" )));

输出:

[One, step, at, a, time, .]

s:空格字符:[ t n x0B f r n]

[abc]:a,b或c(简单类)

贪心量词X +:X,一次或多次

另一答案

解:

String.split("[ ,]+"); // split on on one or more spaces or commas

[] - 简单的角色类

[, ] - 包含空格或逗号的简单字符类

[ ,]+ - 空格或逗号出现一次或多次

例:

String source = "A B    C,,D, E ,F";
System.out.println(Arrays.toString(source.split("[, ]+")));

输出:

[A, B, C, D, E, F]

以上是关于JAVA 如何用部分空格分割字符串,急!的主要内容,如果未能解决你的问题,请参考以下文章

如何用逗号分割不跟空格的字符串?

如何用空格分割字符串,不包括Python中双引号之间的空格? [复制]

Python - 如何用非字母字符分割字符串

java中如何用split对一个字符串按逗号和分号分割成数组

如何用逗号而不是空格分割列表

如何用括号外的逗号分割字符串?