parsing - How to parse this information from a string? -
country residents area capital andorra 71201 468 andorra la vella italien 58133509 301230 rom san marino 29251 61 san marino
i need store information (capital, residents, area, capital) in different variables. how go parsing this? notice there spaces in names.
i have tried reading each token ( scanner.next() ) fails when there spaces in capital or country name.
i have tried reading each line , parsing can't figure out way parse correctly since there sometime spaces in names. (i used indexof() , substring() )
this part of bigger file there no spaces in residents or area field in entire field.
my try:
while(scanner.hasnext()){ string info = scanner.nextline(); //parse string int nameindex = info.indexof(" "); system.out.println(info.substring(0,nameindex)); int resindex = info.indexof(" ", nameindex); }
i hope have multiline string per question title. why don't use regex whole content. given string stored in variable data
data.split("[ ]{2,}")
this give array of data whole. when have parse can loop 4 elements @ time
(edit)
or else can use function... hope easier you.
list<map<string, string>> parse(string data){ list<map<string, string>> datalist = new arraylist<map<string, string>>(); string[] lines = data.split("\n"); string[] keys = lines[0].split("[ ]{2,}"); (int = 1; < lines.length; i++) { string row[] = lines[i].split("[ ]{2,}"); map<string, string> rowmap = new hashmap<string, string>(); (int j = 0; j < row.length; j++) { rowmap.put(keys[j], row[j]); } datalist.add(rowmap); } return datalist; }
Comments
Post a Comment