如何读取字符串中的子字符串??

vicepaladin 2008-08-31 06:28:06
我现在有一个字符串,类似下面
["CHN","柳林","343","234","452","235","34"]

怎么能把这个字符串中双引号中的值取出来然后按照指定的次序放到表格里显示呢?最好是CHN这个字符串放到最后显示

效果最好是

<table>
<tr>
<td>柳林</td><td>343</td><td>234</td><td>235</td><td>CHN</td><td>452</td><td>34</td>

</tr>

谢谢啦~~
...全文
207 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
realcbb 2008-08-31
  • 打赏
  • 举报
回复
如果你只要实现那很简单,提取总没问题吧?
如果考虑维护的话,可以写个bean,然后写个方法把取出来的数据一一放在bean里面,在页面遍历显示。
顺序你想怎么显示就怎么显示就是了。
aniude 2008-08-31
  • 打赏
  • 举报
回复
恩。是的,这就是传说中的魔术数字....哈哈
ZangXT 2008-08-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aniude 的回复:]
用index的话维护代码可是很郁闷的事情.....
[/Quote]
的确如此。遇到过这样的情况,好多东西都写死了,根本不知道下标代表的什么意思,维护很麻烦。
palm_civet 2008-08-31
  • 打赏
  • 举报
回复
以前做毕设的时候写过一个类似的跟你的区别就是没有[],你试试吧,不知道有没有bug

package cn.sh.wenxuan.util.csv;

import java.io.BufferedReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

public class CsvFomatParse {

private BufferedReader br;
private boolean hasNext = true;
private char separator;
private char quotechar;
public static final char DEFAULT_SEPARATOR = ',';
public static final char DEFAULT_QUOTE_CHARACTER = '"';

public CsvFomatParse() {
this(DEFAULT_SEPARATOR, DEFAULT_QUOTE_CHARACTER);
}

public CsvFomatParse(char separator, char quotechar) {
this.separator = separator;
this.quotechar = quotechar;
}

public String [] parseLine(String line) throws Exception {
if(line == null) {
return null;
}

StringBuilder sb = new StringBuilder(line);
ArrayList list = new ArrayList();
StringBuilder buffer = new StringBuilder();
char preview = ' ';
sb.trimToSize();
int currentStatus = 0;
for(int i = 0; i < sb.capacity(); i++) {
char c = sb.charAt(i);
if(currentStatus == 0) {
if( c == quotechar) {
currentStatus = 1;
continue;
} else {
throw new Exception("WRONG FOMAT AT COLUMN " + i);
}
}

if(currentStatus == 1) {
if(c != quotechar) {
currentStatus = 2;
buffer.append(c);
} else {
currentStatus = 3;
preview = c;
//buffer.append(c);
}
continue;
}

if(currentStatus == 2) {
if(c != quotechar) {
buffer.append(c);
} else {
currentStatus = 3;
preview = c;
}
continue;
}

if(currentStatus == 3) {
if(c == quotechar) {
buffer.append(preview);
buffer.append(c);
currentStatus = 2;
} else {
if(c == separator) {
list.add(buffer.toString());
currentStatus = 4;
buffer = new StringBuilder();
} else {
throw new Exception("WRONG FOMAT AT COLUMN " + i);
}
}
continue;
}

if(currentStatus == 4) {
if(c == quotechar) {
currentStatus = 1;
} else {
throw new Exception("WRONG FOMAT AT COLUMN " + i);
}
continue;
}
}
list.add(buffer.toString());
return (String[]) list.toArray(new String[]{""});
}

public static void main(String args[]) {
CsvFomatParse parse = new CsvFomatParse();
String[] arr = null;
try {
arr = parse.parseLine("\"avmailc.exe\",\"3052\",\"Console\",\"0\",\"1,364 K\"");
} catch (Exception e) {
e.printStackTrace();
}

for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}

}

}
palm_civet 2008-08-31
  • 打赏
  • 举报
回复
取出来以后你想怎么像是就怎么显示
palm_civet 2008-08-31
  • 打赏
  • 举报
回复
把头尾的[]这两个字符去掉就是csv格式的数据

所以用这个吧

http://opencsv.sourceforge.net/
aniude 2008-08-31
  • 打赏
  • 举报
回复
用index的话维护代码可是很郁闷的事情.....
aniude 2008-08-31
  • 打赏
  • 举报
回复
建议用一个class去做。例如
class User {
private String country;
private String name;
private age;
.... //get, set 方法
}

然后就
for (User user : userList) {
user.getUserName();
user.getCountry();
......
}
ZangXT 2008-08-31
  • 打赏
  • 举报
回复
用数组保存的话,你知道index直接取就可以了。

81,092

社区成员

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

试试用AI创作助手写篇文章吧