206 lines
3.9 KiB
Java
206 lines
3.9 KiB
Java
/*
|
||
* $Id: ItemList.java,v 1.2 2009-03-15 22:12:18 parg Exp $
|
||
* Created on 2006-3-24
|
||
*/
|
||
package org.json.simple;
|
||
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
import java.util.StringTokenizer;
|
||
|
||
/**
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD>÷ָ<C3B7><D6B8><EFBFBD><EFBFBD>ֿ<EFBFBD><D6BF><EFBFBD>һ<EFBFBD><D2BB>item.<2E>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>item.ÿ<><C3BF>item<65><6D><EFBFBD>߲<EFBFBD><DFB2><EFBFBD><EFBFBD>ǿհ<D5B0>.
|
||
* <20><><EFBFBD>磺
|
||
* |a:b:c| => |a|,|b|,|c|
|
||
* |:| => ||,||
|
||
* |a:| => |a|,||
|
||
* @author FangYidong<fangyidong@yahoo.com.cn>
|
||
*/
|
||
public class ItemList {
|
||
private final static String sp=",";
|
||
List<String> items=new ArrayList<String>();
|
||
|
||
|
||
public ItemList(){}
|
||
|
||
/**
|
||
*
|
||
* @param s <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
*/
|
||
public ItemList(String s){
|
||
this.split(s,sp,items);
|
||
}
|
||
/**
|
||
*
|
||
* @param s <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* @param sp <20>ָ<EFBFBD><D6B8><EFBFBD>
|
||
*/
|
||
//public ItemList(String s,String sp){
|
||
// this.sp=s;
|
||
// this.split(s,sp,items);
|
||
//}
|
||
|
||
/**
|
||
*
|
||
* @param s
|
||
* @param sp
|
||
* @param isMultiToken sp<73>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>ָ<EFBFBD><D6B8><EFBFBD>
|
||
*/
|
||
public ItemList(String s,String sp,boolean isMultiToken){
|
||
split(s,sp,items,isMultiToken);
|
||
}
|
||
|
||
public List<String> getItems(){
|
||
return this.items;
|
||
}
|
||
|
||
public String[] getArray(){
|
||
return (String[])this.items.toArray(new String[items.size()]);
|
||
}
|
||
|
||
public void split(String s,String sp,List<String> append,boolean isMultiToken){
|
||
if(s==null || sp==null)
|
||
return;
|
||
if(isMultiToken){
|
||
StringTokenizer tokens=new StringTokenizer(s,sp);
|
||
while(tokens.hasMoreTokens()){
|
||
append.add(tokens.nextToken().trim());
|
||
}
|
||
}
|
||
else{
|
||
this.split(s,sp,append);
|
||
}
|
||
}
|
||
|
||
public void split(String s,String sp,List<String> append){
|
||
if(s==null || sp==null)
|
||
return;
|
||
int pos=0;
|
||
int prevPos=0;
|
||
do{
|
||
prevPos=pos;
|
||
pos=s.indexOf(sp,pos);
|
||
if(pos==-1)
|
||
break;
|
||
append.add(s.substring(prevPos,pos).trim());
|
||
pos+=sp.length();
|
||
}while(pos!=-1);
|
||
append.add(s.substring(prevPos).trim());
|
||
}
|
||
|
||
/**
|
||
* <20><><EFBFBD>÷ָ<C3B7><D6B8><EFBFBD>.
|
||
* @param sp <20>ָ<EFBFBD><D6B8><EFBFBD>
|
||
*/
|
||
//public void setSP(String sp){
|
||
// this.sp=sp;
|
||
//}
|
||
|
||
/**
|
||
* <20><><EFBFBD>뵥<EFBFBD><EBB5A5>item.
|
||
* @param i <20><><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>(֮ǰ)
|
||
* @param item
|
||
*/
|
||
public void add(int i,String item){
|
||
if(item==null)
|
||
return;
|
||
items.add(i,item.trim());
|
||
}
|
||
/**
|
||
* <20><><EFBFBD>뵥<EFBFBD><EBB5A5>item.
|
||
* @param item
|
||
*/
|
||
public void add(String item){
|
||
if(item==null)
|
||
return;
|
||
items.add(item.trim());
|
||
}
|
||
|
||
/**
|
||
* <20><>һ<EFBFBD><D2BB>item.
|
||
* @param list <20><><EFBFBD><EFBFBD><EFBFBD>list
|
||
*/
|
||
public void addAll(ItemList list){
|
||
items.addAll(list.items);
|
||
}
|
||
|
||
/**
|
||
* <20><>һ<EFBFBD><D2BB>item.
|
||
* @param s <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
*/
|
||
public void addAll(String s){
|
||
this.split(s,sp,items);
|
||
}
|
||
|
||
/**
|
||
* <20><>һ<EFBFBD><D2BB>item.
|
||
* @param s <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* @param sp <20>ָ<EFBFBD><D6B8><EFBFBD>
|
||
*/
|
||
public void addAll(String s,String sp){
|
||
this.split(s,sp,items);
|
||
}
|
||
|
||
public void addAll(String s,String sp,boolean isMultiToken){
|
||
this.split(s,sp,items,isMultiToken);
|
||
}
|
||
|
||
/**
|
||
* <20><>õ<EFBFBD>i<EFBFBD><69>item. 0-based.
|
||
* @param i
|
||
* @return
|
||
*/
|
||
public String get(int i){
|
||
return (String)items.get(i);
|
||
}
|
||
|
||
/**
|
||
* <20><><EFBFBD>item<65><6D>.
|
||
* @return
|
||
*/
|
||
public int size(){
|
||
return items.size();
|
||
}
|
||
/**
|
||
* <20>÷ָ<C3B7><D6B8><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ı<EFBFBD>ʾ.
|
||
*/
|
||
public String toString(){
|
||
return toString(sp);
|
||
}
|
||
|
||
/**
|
||
* <20>÷ָ<C3B7><D6B8><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ı<EFBFBD>ʾ.
|
||
* @param sp <20><><EFBFBD><EFBFBD>ø÷ָ<C3B7><D6B8><EFBFBD><EFBFBD>ָ<EFBFBD>.
|
||
* @return
|
||
*/
|
||
public String toString(String sp){
|
||
StringBuilder sb=new StringBuilder();
|
||
|
||
for(int i=0;i<items.size();i++){
|
||
if(i==0)
|
||
sb.append(items.get(i));
|
||
else{
|
||
sb.append(sp);
|
||
sb.append(items.get(i));
|
||
}
|
||
}
|
||
return sb.toString();
|
||
|
||
}
|
||
|
||
/**
|
||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>item.
|
||
*/
|
||
public void clear(){
|
||
items.clear();
|
||
}
|
||
|
||
/**
|
||
* <20><>λ.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ.
|
||
*/
|
||
public void reset(){
|
||
//sp=",";
|
||
items.clear();
|
||
}
|
||
}
|