询问一个字符串处理的最优方法 有一个字符串类似于:String str="hd0$jfsfi$fjjaio%jsfij$jsfsjf%jsjg#"其中$和%为分隔符,#为结束符。我想从该字符串中提取子串如:hd0,jfsfi,jjaio等进行处理。问:怎么拆分处理这个字符串速度最快? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 调用 字符串的拆分方法 split 返回一个字符串数组 String[] strSplit = str.split("$");在对数组处理 哦,谢谢提示,不过初学java,不太理解正则表达式。我的字符串里有多个分隔符号,但是split方法只提供一个字符串参数,可不可以这样?String[] strSplit = str.split("$%#");另外,对于这样的字符串:"$sjlf$%$%#",该方法又是怎么处理的? StringTokenizer st =new StringTokenizer("hd0$jfsfi$fjjaio%jsfij$jsfsjf%jsjg#", "%$#"); while(st.hasMoreElements()) { System.out.println(st.nextElement()); } 一楼的方法中存在错误,“$”是正则表达式的专用符号需要转义改为“\\$”。二楼的方法也不好,要分好几次转,这样会产生很多的数组。我的建议代码:String str="hd0$jfsfi$fjjaio%jsfij$jsfsjf%jsjg#";String[] s = str.split("\\$|%|#$");for(String t : s) { System.out.println(t);} import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test { /** * @param args */ public static void main(String[] args) { // TODO 自动生成方法存根 String str="hd0$jfsfi$fjjaio%jsfij$jsfsjf%jsjg#"; String[] s = str.split("\\$|%|#"); for(int i=0;i<s.length;i++) { System.out.println(s[i]); } Pattern p = Pattern.compile("(\\w*)\\$*|(\\w*)%*|(\\w*)#*"); Matcher m = p.matcher("hd0$jfsfi$fjjaio%jsfij$jsfsjf%jsjg#"); while(m.find()) System.out.println(m.group(1)); }}上段代码两种方式都有 楼上这段代码: for(String t : s) { System.out.println(t);低版本不兼容,我觉得用for(int i=0;i<s.length;i++) { System.out.println(s[i]);并不比楼上的差多少 str.substring(0, str.indexOf("#")).split("\\$|\\%"); 感谢这么多兄弟的参与,我很知足。其实我也知道拆分并不难,只是想找一种速度最快的方法,因为拆分语句要在我的程序里一直频繁的执行。有时候我也怀疑split的效率... LS兄弟艘说的差不多了 不说了JF 发个牢骚帖~~ 统计代码行的代码(用JTable显示),有点小问题... JS有没有自动选择下拉框里的东西的? java远程控制 Jtable部分 做一个ajax表单提交代码 哪位兄弟有jspSmartUpload的正版源代码(不是反编译的)?发我一份吧.....(急急急) 异常~——基类方法未throws自类可以throws么??~~ 我要下载JAVA编程思想(第2版)(简体) 哪位能提供一下地址? 请帮忙看看这个问题怎么解决?thx 如何防止JtextArea里的文字被用户选择并copy??? 菜鸟再次提问,大家帮帮忙啊,谢谢啦 如何用jfreechart画平滑的曲线
在对数组处理
String[] strSplit = str.split("$%#");另外,对于这样的字符串:"$sjlf$%$%#",该方法又是怎么处理的?
while(st.hasMoreElements())
{
System.out.println(st.nextElement());
}
二楼的方法也不好,要分好几次转,这样会产生很多的数组。我的建议代码:String str="hd0$jfsfi$fjjaio%jsfij$jsfsjf%jsjg#";
String[] s = str.split("\\$|%|#$");
for(String t : s) {
System.out.println(t);
}
import java.util.regex.Pattern;
public class Test { /**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
String str="hd0$jfsfi$fjjaio%jsfij$jsfsjf%jsjg#";
String[] s = str.split("\\$|%|#");
for(int i=0;i<s.length;i++) {
System.out.println(s[i]);
}
Pattern p = Pattern.compile("(\\w*)\\$*|(\\w*)%*|(\\w*)#*");
Matcher m = p.matcher("hd0$jfsfi$fjjaio%jsfij$jsfsjf%jsjg#");
while(m.find())
System.out.println(m.group(1));
}}
上段代码两种方式都有
System.out.println(t);
低版本不兼容,我觉得用for(int i=0;i<s.length;i++) {
System.out.println(s[i]);并不比楼上的差多少
其实我也知道拆分并不难,只是想找一种速度最快的方法,因为拆分语句要在我的程序里一直频繁的执行。有时候我也怀疑split的效率...