Java字符串溢出不起作用

Java字符串溢出不起作用,java,regex,Java,Regex,我的字符串如下所示 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 24416 2408 1360 S 0.0 0.2 0:00.88 init 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 171 root 0 -20 0

我的字符串如下所示

     PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
    1 root      20   0 24416 2408 1360 S   0.0  0.2   0:00.88 init
   10 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kdevtmpfs
  171 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 mpt_poll_0
  818 messageb  20   0 23940 1260  920 S   0.0  0.1   0:00.97 dbus-daemon
  995 whoopsie  20   0  185m 4224 3000 S   0.0  0.4   0:00.06 whoopsie
 1000 daemon    20   0 16908  156    0 S   0.0  0.0   0:00.19 atd
24043 root      20   0  570m 3952 2780 S   0.0  0.4   0:04.28 console-kit-dae
24110 root      20   0  182m 3032 2484 S   0.0  0.3   0:01.66 polkitd
26310 root      20   0     0    0    0 S   0.0  0.0   0:00.00 flush-8:0
30081 root      20   0     0    0    0 S   0.0  0.0   0:00.02 kworker/0:1
31381 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kworker/0:2
31511 root      20   0 81900 3904 3048 S   0.0  0.4   0:00.03 sshd
31646 root      20   0 19228 1376 1060 R   0.0  0.1   0:00.00 top
现在我想拆分这个字符串,所以我使用了下面的java函数

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

但是当我检查
值[0]
时,它只显示31646而不显示其他值?我认为split中的正则表达式有问题,所以我也尝试了这个
“\\t\\n\\x0B\\f\\r”
,但它不起作用。如果有人知道如何处理这个问题?

那么我相信\s应该足以胜任这项工作。我建议你去掉加号。试试这个

String[] values = mystring.split("\\s+");

for(int i=0; i<mystring.length;i++){
    System.out.println(values[0]);
}
String[]value=mystring.split(\\s+);

对于(inti=0;i我不知道您想要什么输出,但请尝试以下代码

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

对于(inti=0;i您正在尝试打印我在下面代码中尝试的第一个元素,它工作得非常好

String mystring=“1111 2222 eeeeee www eeeeee”

String[]value=mystring.split(\\s+);
for(int i=0;i
为什么它在一个循环中?
i
的意义是什么?您希望得到什么输出?!基于您希望分割字符串的内容?
mystring.trim().split(\\s+);
因此前面的空格不会在
[0]处导致空字符串
。你能告诉我你想要什么作为输出吗?你想要整个PID第一列的输出吗?你的代码错得很厉害。它甚至无法编译。修复它。“我不知道你想要什么输出”-那你怎么能想出一个建议的解决方案呢?@tbsalling Dom可能是从这个问题中猜出来的。这看起来更有用,但仍然无法判断这是否是OP真正想要的。
String[] values = mystring.split("\\s+");
String[][12] output;
for(int i = 0; i < (values.length)/12 ;i++)
{
    for(int i = 0; j < 12; j++)
    {
        output[i][j] = values[i*12 + j];
    }
}
for(int i = 0; i < output.length; i++)
{
    for(int j = 0; j < 12; j++)
    {
        System.out.print(output[i][j] + " ");
    }
    System.out.println(" ");
}
        String[] values = mystring.split("\\s+");
        for(int i=0; i< values.length;i++){
        System.out.println(values[i]);
        }