Java对于一段String的处
我写了一段代码,不保证没问题,但你给的几个数据,测试都通过了。
import java。util。*;
public class Example1_6
{
public static void main(String[] args)
{
intln(new Example1_6()。 getElements("{a,b,c}"));
intln(new Example1_6()。getElements("{a,b,{c,d},e}"));
intln(new Example1_6()。 getElements("{{{a,b,c,d}}}"));
intln(new Example1_...全部
我写了一段代码,不保证没问题,但你给的几个数据,测试都通过了。
import java。util。*;
public class Example1_6
{
public static void main(String[] args)
{
intln(new Example1_6()。
getElements("{a,b,c}"));
intln(new Example1_6()。getElements("{a,b,{c,d},e}"));
intln(new Example1_6()。
getElements("{{{a,b,c,d}}}"));
intln(new Example1_6()。getElements("{ a, b, { c , d} }"));
}
public List getElements(String s)
{
//定义一个字符串列表
List list=new ArrayList();
if(s。
length()<=2)
{
//s的长度小于2说明没有元素,返回空值
return null;
}
else
{
//定义一个标志位,来指明是不是在{}内,true表示是,false则不是
boolean flag=false;
//暂时存储各个元素
StringBuffer buf=new StringBuffer();
//numberOfEnd用来存储还需要多少'}'来匹配
int numberOfEnd=0;
for(int index=1;index length()-1;index++)
{
//获取第index+1位置的字符
char c= arAt(index);
//去掉空格
if(' '==c)
continue;
//flag==true,则说明在{}内,需要判断"}"字符,以及还有没有'{',有的话numberOfEnd++
if(flag)
{
//如果在{}内的话,无论如何都得添加这个字符
buf。
append(c);
//判断要匹配的字符是不是为'{',是的话numberOfEnd++
if('{'==c)
{
numberOfEnd++;
}
//判断要匹配的字符是不是为'}',是的话numberOfEnd--,此时需要判断匹配是否结束
else if('}'==c)
{
//如果--numberOfEnd==0,则匹配结束
if(--numberOfEnd==0)
{
//此次匹配结束,将buf的内容添加到list列表中
// d( String());
//恢复各个标志符
//buf=new StringBuffer();
flag=false;
}
}
}
//如果为false,则说明没在{}内,需要判断是否包含'{'
else
{
//如果'{'==c的话,说明是一个复杂元素,包含在{}中
if('{'==c)
{
buf。
append(c);
numberOfEnd++;
flag=true;
}
//只有遇到逗号才输出
else if(','==c)
{
d( String());
buf=new StringBuffer();
}
else
{
buf。
append(c);
}
}
}
//最后一个后面没有逗号,有可能会漏掉,所以最后要做处理
if(buf。length()!=0)
{
d( String());
}
}
return list;
}
}。
收起