java - Parse a string into serval variables -


so have string can this:

update 12.7543.81 parma="dk.asterix.org" [denmark] (9.1) parmb="de.asterix.org" [germany] (1.0) called=49xxxxxxx (gbh) calling=45xxxxxxxx (loa) internal=0 state=2  update 12.7543.81 parmb="de.asterix.org" [germany] (1.0) parma="dk.asterix.org" [denmark] (9.1) called=49xxxxxxx (gbh) calling=45xxxxxxxx (loa) internal=0 state=2  update 12.7543.81 internal=0 state=2 parmb="de.asterix.org" [germany] (1.0) parma="dk.asterix.org" [denmark] (9.1) called=49xxxxxxx (gbh) calling=45xxxxxxxx (loa)  update 12.7543.81 internal=0 state=2 parmb="de.asterix.org" [germany] (1.0) calling=45xxxxxxxx (loa) parma="dk.asterix.org" [denmark] (9.1) called=49xxxxxxx (gbh)  

all compleetly randomly added list, still follow 1 specific chunk pattern:

xxx = string ddd = decimal iii = integer  chunk 1: update chunk 2: xxx.xxx.xxx chunk x: parma="xxx" [xxx] (ddd) chunk x: parmb="xxx" [xxx] (ddd) chunk x: calling=xxx (xxx) chunk x: called=xxx (xxx) chunk x: internal=iii chunk x: state=iii 

i wanted extract string data variables, regex don't random order, thinking of using split(" "), , cykle trough each word.

but thord before started doing that, ask if there way extract data?

idea seperate chunks example:

import java.util.arraylist; import java.util.list;   public class test {      final static string[] lines = new string[]{             "update 12.7543.81 parma=\"dk.asterix.org\" [denmark] (9.1) parmb=\"de.asterix.org\" [germany] (1.0) called=49xxxxxxx (gbh) calling=45xxxxxxxx (loa) internal=0 state=2",             "update 12.7543.81 parmb=\"de.asterix.org\" [germany] (1.0) parma=\"dk.asterix.org\" [denmark] (9.1) called=49xxxxxxx (gbh) calling=45xxxxxxxx (loa) internal=0 state=2",             "update 12.7543.81 internal=0 state=2 parmb=\"de.asterix.org\" [germany] (1.0) parma=\"dk.asterix.org\" [denmark] (9.1) called=49xxxxxxx (gbh) calling=45xxxxxxxx (loa)",             "update 12.7543.81 internal=0 state=2 parmb=\"de.asterix.org\" [germany] (1.0) calling=45xxxxxxxx (loa) parma=\"dk.asterix.org\" [denmark] (9.1) called=49xxxxxxx (gbh)"     };      public static void main(string[] args){         for(string line : lines){             string[] parms = splitparm(line);             for(string parm : parms){                 system.out.println(parm);             }         }     }      static public string[] splitparm(string text){         string[] textarr = text.split(" ");         list<string> parms = new arraylist<>();         parms.add(textarr[0]); // update         parms.add(textarr[1]); // 12.7543.81          for(int = 2;i<textarr.length;i++){             if(textarr[i].matches("^([a-za-z]+)=([\\s ]+)$")){                 parms.add(textarr[i]);             }             else{                 parms.set(parms.size()-1, parms.get(parms.size()-1) + " "+textarr[i]);             }         }         return parms.toarray(new string[]{});     } } 

one idea use separate regex each chunk - process each line using these expressions.


Comments

Popular posts from this blog

matlab - Deleting rows with specific rules -

jquery - How would i go about shortening this code? And to cancel the previous click on click of new section? -