想把字符串中内容分割出来,制表符能作为分隔符吗?

mlovex 2010-04-09 03:41:25
通过windows 的 tasklist 把所有task得到,tasklist 命令中介绍默认得到的结果是由制表符分割的:

*************************************************************
javaw.exe 3684 Console 0 164,608 K Running IBM-L3AMH63\wuxin 0:04:10 Java - test.java - Eclipse SDK
firefox.exe 5884 Console 0 155,860 K Running IBM-L3AMH63\wuxin 0:14:04 Microsoft Windows XP - Tasklist - Firefox - 火狐中国版
wmiprvse.exe 844 Console 0 7,196 K Running NT AUTHORITY\NETWORK SERVICE 0:00:17 N/A
cmd.exe 5660 Console 0 2,932 K Running IBM-L3AMH63\wuxin 0:00:00 cmd.exe - tasklist /v /nh /fo TABLE
tasklist.exe 3844 Console 0 6,352 K Running IBM-L3AMH63\wuxin 0:00:00 OleMainThreadWndName

*************************************************************

每行的内容进行分割,但得不到想要的结果。
eachLine.split("\t").size() 结果都是1

这里怎么能得到每行中每列的值呢?谢谢!
...全文
494 8 打赏 收藏 转发到动态 举报
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mlovex 2010-04-09
  • 打赏
  • 举报
回复
还是从tasklist这个命令下手了~~
tasklist /fo csv
可以得到逗号分隔符的

"System Idle Process","0","Console","0","16 K","Running","NT AUTHORITY\SYSTEM","14:44:40","N/A"
"System","4","Console","0","288 K","Running","NT AUTHORITY\SYSTEM","0:04:35","N/A"
"smss.exe","724","Console","0","432 K","Running","NT AUTHORITY\SYSTEM","0:00:00","N/A"
"csrss.exe","796","Console","0","1,792 K","Running","NT AUTHORITY\SYSTEM","0:02:44","N/A"

joaryyu 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 suqian999 的回复:]
你 那好像不是tab分割的,我换成tab后,

Java code


public static void main(String[] args) {
String s ="javaw.exe 3684 0:04:10 Java - test.java - Eclipse SDK " +
……
[/Quote]
在我机子上
打印s和打印分隔后的字符数组,结果一样。
也就是最后分隔成了一个字符串。
joaryyu 2010-04-09
  • 打赏
  • 举报
回复
可以自己写个函数处里每一个字串
如果连续出现多个空格的话,不是我们想要的列,否则就是想要的某一列的数据。
mlovex 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 suqian999 的回复:]

你 那好像不是tab分割的,我换成tab后,
Java code


public static void main(String[] args) {
String s ="javaw.exe 3684 0:04:10 Java - test.java - Eclipse SDK " +
……
[/Quote]

对,好像不是tab分。
那该怎么得到一行中各个列的值呢?
空格也不行,最后一列是程序名字,其中肯定会有空格。
纠结....
suqian999 2010-04-09
  • 打赏
  • 举报
回复
你 那好像不是tab分割的,我换成tab后,


public static void main(String[] args) {
String s ="javaw.exe 3684 0:04:10 Java - test.java - Eclipse SDK " +
"firefox.exe 5884 Console 0 155,860 K 0:14:04 Microsoft Windows XP - Tasklist ";

String[] s1 = s.split("\t");
for(int i=0;i <s1.length;i++)
{
System.out.println(s1[i]);
}

}
结果:
javaw.exe
3684
0:04:10
Java
-
test.java
-
Eclipse
SDK
firefox.exe
5884
Console
0
155,860
K
0:14:04
Microsoft
Windows
XP
-
Tasklist
若鱼1919 2010-04-09
  • 打赏
  • 举报
回复
或者是:eachLine.split("\\s")
若鱼1919 2010-04-09
  • 打赏
  • 举报
回复
eachLine.split("\\t")
canoe982 2010-04-09
  • 打赏
  • 举报
回复
直接用空格分割试试。
相关推荐

62,567

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告