0

我从客户那里收到了无数长字符串,例如“1 15/8/2012 15:00 palak paneer 2 200 dam aaloo 2 100”,所以我的要求是我希望这个字符串采用表格格式,例如:

1""""""""""""""""""""""           ''''''''''''''''''''''''''''''''''''''''''''         15/8/2012 15:00

palak paneer """""""""""""   2 """""""""""""""""   200

dam aaloo '''''''''''''''''''''''''''      2   '''''''''''''''''''''''''''' 100

等等。

任何帮助,将不胜感激。我应该使用什么来将整个字符串放入表格格式并且我不知道字符串的长度,所以我们不能使用硬编码值。

我已经尝试过这个string.split函数,我有一个字符串数组,但是正如我所说的字符串的长度不是固定的,所以我们不能进行硬编码,所以我应该使用什么?

这是我的尝试:

recieved =modifiedSentence.split("~");
int length = 0;
length = recieved.length;
modifiedSentence = modifiedSentence.substring(length);
String string =String.format("%+s %+4s",recieved[0],recieved[1]);
4

1 回答 1

0

此代码可能会对您有所帮助,它将字符串拆分received为行。

    int start=0; 
    String[] rows=new String[10];
    int colCount=0;
    int rowCount=0,i;
    String str="";
    String received="1 15/8/2012 15:00 palak paneer 2 200 dam aaloo 2 100 a a a 3 4";
    String splittedStrs[]=received.split("[a-z]");
    String header=splittedStrs[0].trim(); 
    received=received.substring(header.length()+1);
    boolean prev=false;
    for ( i = 0; i < received.length(); i++) {
        char c=received.charAt(i);
        if(c==' '){ 
            if(str.matches("\\D+")){                        
                prev=true; 
                str="";
            }
            else{
                if(prev==true){ 
                    colCount++;
                    if(colCount==3){
                        rows[rowCount]=received.substring(start,i);
                        rowCount++; 
                        start=i+1;
                        colCount=0;
                    } 
                }
                colCount++;
                if(colCount==3){
                    rows[rowCount]=received.substring(start,i);
                    rowCount++;
                    start=i+1;
                    colCount=0;
                }
                prev=false;
                str="";
            }
        } 
        else{
            str=str.concat(c+"");
        }
    }
    rows[rowCount]=received.substring(start,i);

    System.out.println("Header ="+header);
    for ( i = 0; i <= rowCount; i++) {
        System.out.println(rows[i]);
    }
于 2012-08-15T18:44:59.230 回答