我想区分 一字符串可能为: "xxx;;;xx;xx;;;;;"
用SPLIT 最;;中间的null好像不成功啊? 只要;;中间有东西就没有问题
用SPLIT 最;;中间的null好像不成功啊? 只要;;中间有东西就没有问题
解决方案 »
- SWING JBUTTON 监听
- 谁有用java awt 做的图片旋转功能哦
- 端午节,在此祭奠中华被掠夺之璀璨文明遗产!
- 奇怪!!!!!HttpServletRequest的getInputStream()方法?????
- 新手:学习Java用什么编译器?
- 这个程序无法捕获异常,请帮助!
- thinking in java 第二章练习题都是些什么意思我怎么看不懂
- 看看这段《java2编程详解》的源码有什么不对的吗?
- 请教一个问题,请回答
- 题: 我的TOMCAT 4.0 的STARTUP.BAT 运行失败!应该如何设置?
- 如何用JAVA得到一个视频的时间长度
- Reader类、Writer类与BufferedReader类、BufferedWriter类概念理解问题
import java.util.*;
import java.util.regex.*;
public class qdb
{
public static String[] split(String s,String regex)
{
Pattern p=Pattern.compile(regex);
return p.split(s);
}
public static void main(String[] args)
{
String s="xxx;;;xx;xx;;;;;" ;
String regex=";+";
System.out.println(Arrays.toString(qdb.split(s, regex)));
}
}
可以看看这个~
String regEx=";+";
Pattern p=Pattern.compile(regEx);System.out.println(p.split("test;;;;t;;t;;t;")[2]);
就出错了
数组是0的时候没有问题
public class qdb
{
public static void main(String[] args)
{
String s= "xxx;;;xx;xx;;;;;";
char[] c=s.toCharArray();
String[] ss=new String[c.length];
for(int i=0;i<ss.length;i++)
{
ss[i]=String.valueOf(c[i]);
}
System.out.println(Arrays.toString(ss));
}
}
别告诉我你想这样~当然换成charAt(int i)也行~
return Pattern.compile(regex).split(this, limit);
} public String[] split(String regex) {
return split(regex, 0);
}
Pattern的split方法是这样的:
API
public String[] split(CharSequence input, int limit)
围绕此模式的匹配拆分给定输入序列。
此方法返回的数组包含输入序列的子字符串,由匹配此模式的另一子序列或输入序列的结尾终止。数组中子字符串的顺序与其在输入中出现的顺序相同。如果此模式与输入的任何子序列都不匹配,那么得到的数组仅包含一个元素,即字符串形式的输入序列。 limit 参数控制应用模式的次数,从而影响结果数组的长度。如果限制 n 大于零,那么模式至多应用 n> - 1 次,数组的长度不大于 n,并且数组的最后条目将包含除最后的匹配定界符之外的所有输入。如果 n 非正,那么将应用模式的次数不受限制,并且数组可以为任意长度。如果 n 为零,那么应用模式的次数不受限制,数组可以为任意长度,并且将丢弃尾部空字符串。 例如,输入 "boo:and:foo" 将产生以下结果及参数: Regex Limit Result
: 2 { "boo", "and:foo" }
: 5 { "boo", "and", "foo" }
: -2 { "boo", "and", "foo" }
o 5 { "b", "", ":and:f", "", "" }
o -2 { "b", "", ":and:f", "", "" }
o 0 { "b", "", ":and:f" } 参数:
input - 要拆分的字符序列。
limit - 结果阈值,如上文中所述。
返回:
根据围绕此模式的匹配来拆分输入后所计算的字符串数组。 123 4 56789
所以在调用"xxx;;;xx;xx;;;;;".split(";");
执行流程应该是这样的:
1、找到1位置的“;”,标志着1位置前的字符串(“xxx”)要被分开
2、匹配2位置的“;”,标志着2位置前的字符串要被分开,但是前没有,只有"",所以就分出来空
3、匹配2位置的“;”,标志着3位置前的字符串要被分开,但是前没有,只有"",所以就分出来空
4、与1相同
5、56789位置在末,被取消。故返回结果是:
{ "xxx", "", "", "xx", "xx" }
你只需要写一个正则传到split里就可以了
JAVA资料太多?选中想收藏的文字(图片),右键选“收录到易载”,搞定!