解决方案 »
- 关于网页单词发音制作和读的问题
- 缺少返回语句
- 如何把String字符串分隔
- 急,关于JComboBox下拉列表变长
- [高分请教] 高手进来,用java写了个聊天室 有办法实现在聊天记录栏(jTextArea)内点击一下用户名 jTextFeild 就取得这个用户名吗?
- 我想写两个线程,一个线程实现向一个链表内写入数据,另一个线程实现从这个链表内依次按顺序读取数据并删除,请问我该如何实现??能否给
- 怎样调用执行本地机器的命令,如C:\jakarta-tomcat-4.1.24\bin\startup.bat
- JBuider9 的用户指南(中文版)
- VisulSourseSafe是什么东西啊,那位高人指点一下???
- 关于提示信息的问题?高分请教
- 请教一个可以从字符串中得到数字类型的正则表达式,包括带千分符,不带千分符,浮点,非浮点,等等
- 线程访问一个synchronised方法的问题!
System.out.println(sour.split("##").length);
List<String> list = new ArrayList<String>();
for(String s:sour.split("##")){
list.add(s);
}
System.out.println(list.size());打印结果是6,后面两个空串被无视了,
可是我想要的结果是list的长度为8才对,后面两个空串不能丢,
如何编码才能获取正确结果
public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。
public String[] split(String regex, int limit)
第二个参数的是限制匹配次数的,设为非正数会无限制的尽可能匹配,如果是0的话则还会将最后的空串去掉。而带一个参数的方法实际上就是调用了第二个参数为0的方法。所以,你调用sour.split("##", -1).length可以得到9的结果,因为实际上切了8次,分为9段,最后还有一个空串。如果你一定要等于8的结果的话,就再减1吧。
import java.util.ArrayList;
public class Test{ public static void main(String []args){
/**
String sour = "1,f,,43,,43,,";
String []arr = sour.split(",") ;
System.out.println(arr.length); for (int i = 0; i < arr.length; i++){
System.out.println(i+1 + " = " + arr[i]) ;
}
*/
String sour = "1##f####43####43######"; List<String> list = new ArrayList<String>() ;
String tmp = sour;
String content ;
int idx = 0 ;
while(!"".equals(tmp)){
idx = tmp.indexOf("##") ;
list.add(tmp.substring(0 , idx)) ;
System.out.println(list.size() + "、" + list.get(list.size()-1)) ;
tmp = tmp.substring(idx+2) ;
}
System.out.println("===" + list.size() ) ;
}
}
结果:E:\>java Test
1、1
2、f
3、
4、43
5、
6、43
7、
8、
===8
int index = 0;
boolean matchLimited = limit > 0;
ArrayList matchList = new ArrayList();
Matcher m = matcher(input); // Add segments before each match found
while(m.find()) {
if (!matchLimited || matchList.size() < limit - 1) {
String match = input.subSequence(index, m.start()).toString();
matchList.add(match);
index = m.end();
} else if (matchList.size() == limit - 1) { // last one
String match = input.subSequence(index,
input.length()).toString();
matchList.add(match);
index = m.end();
}
} // If no match was found, return this
if (index == 0)
return new String[] {input.toString()}; // Add remaining segment
if (!matchLimited || matchList.size() < limit)
matchList.add(input.subSequence(index, input.length()).toString()); // Construct result
int resultSize = matchList.size();
if (limit == 0)
while (resultSize > 0 && matchList.get(resultSize-1).equals(""))
resultSize--; String[] result = new String[resultSize];
return (String[])matchList.subList(0, resultSize).toArray(result);
}