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了,分给你了~

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-13
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));本回答被网友采纳
第2个回答  2012-06-13
String中的 indexof取最后一个“ ”的位置 然后用subString 取的2个 子字符串追问

我去试试看

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

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

追答

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

追问

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

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

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

Java干货 | java分割字符串-专为小白量身定制不看你就亏大喽!
首先定义一个字符串变量str,初始化为“今天天气真好”。接着调用String类的split()方法,以字符“天”作为分隔符,将字符串分割成数组。最终,数组中的元素即为分割后的结果,分别为“今”和“气真好”。理解了基本操作后,接下来让我们一起探讨几种常见的字符分割方法。在Java中,主要使用split()方法...

JAVA中 我要将字符串以空格为标记分割成多个字符串,并将分割后的字符...
public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果:Regex 结果 : { "boo", "and", "foo" } ...

Java如何分割字符串?
在Java中,分割字符串通常使用split方法。该方法将字符串按照指定分隔符分割,并返回字符串数组,数组中的每个元素为分割后的子串。示例代码如下:首先定义字符串变量str,调用split方法传入分隔符" "(空格)进行分割,结果保存在字符串数组words中。通过for循环遍历输出每个单词。此外,可以使用正则表达式作为...

java中split的用法
`split` 方法是String类的一个成员方法,可以直接通过字符串对象来调用。它接受一个正则表达式作为参数,用于定义拆分的规则。例如,按照空格拆分字符串可以这样做:java String str = "Hello World!";String[] result = str.split;此时,`result` 数组将包含两个元素:"Hello" 和 "World!"。二、正...

Java 怎么将一个字符串按空格分割,并每一部分放入一个数组中?_百度知 ...
public static void main(String[] args) {String s = "ab cde fg";String[] re = s.split(" ");\/\/用split()函数直接分割for (String string : re) {System.out.println(string);}}用split()函数直接分割

Java-字符串切割(split)
总结而言,使用split()方法分割字符串,无需额外的转义符,根据正则表达式进行分割即可。通过合理设置正则表达式,可实现多种需求的字符串分割操作。例如,按空格进行分割:"Hello World"将被分割为"Hello"和"World"两部分。如果使用"."进行分割:"Hello.World"将被分割为"Hello"和"."两部分。对于需要更...

java编程如何将字符串每2个分割并用空格隔开存入数组中?
java将字符串每隔2个分割并用空格隔开存入数组的例子如下:String str = "abcdefchakdjfkdjfks";\/\/字符串int m=str.length()\/2;if(m*2<str.length()){m++;}String[] strs=new String[m];int j=0;for(int i=0;i<str.length();i++){if(i%2==0){\/\/每隔两个strs[j]=""+str...

如何把一个字符串分割成多个字符串
一、待分割字符串 待分割字符串为如下:String str = "a b c d e f g"其中,字符串中的的空白分别为:单个空格,多个空格,tab制表符。二、使用一个或多个空格分割字符串 正确代码如下:String [] arr = str.split("\\\\s+");for(String ss : arr){ System.out.println(...

Java实用小工具系列1---使用StringUtils分割字符串
在编程中,处理以逗号分隔的字符串时常遇到困扰,尤其当用户输入存在多余空格或不规范逗号时,如:aaa, bbb ,ccc, ,。直接使用Java的split方法会导致解析出意料之外的结果,例如:[aaa, bbb , ccc, ],元素间多出空格,且最后一个元素后还有额外的逗号。为了解决这个问题,Spring框架提供了StringUtils....

Java中split的用法
Java中split主要用于分隔字符串。具体分析如下:1、如果用“.”作为分隔的话,必须是如下写法,String.split("\\\\."),这样才能正确的分隔开,不能用String.split(".")。2、如果用“|”作为分隔的话,必须是如下写法,String.split("\\\\|"),这样才能正确的分隔开,不能用String.split("|"),“.”和“...

相似回答