请教一个字符串截取的问题 有一这样的字符串: 32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg 需要截取所有A和B间的内容,请问该如何处理,最好能符上相关代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用str.split()配合正则拆解...某正则小白飘过... 试了试,似乎没问题喵~~~`public static void main(String[] args){ String str = "32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg"; str = str.substring(str.indexOf("A") + 1, str.lastIndexOf("B")); String[] strs = str.split("B.*?A"); System.out.println(str); for (int i = 0; i < strs.length; i++) { System.out.println(strs[i]); }} 先用substring()把脑袋和尾巴吃了喵...然后用split()把B和A之间的吃了喵...最后split()返回的数组就是答案了喵... String Content = "32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg";Pattern p = Pattern.compile("A[^A]+B",Pattern.CASE_INSENSITIVE|Pattern.MULTILINE);Matcher ma = p.matcher(Content);while(ma.find()Content=ma.replaceFirst(SelectValue); String str = "32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg"; String[] arr = str.split("(^|B)[^B]+?A|B[^A]+?(A|$)"); for(int i=0;i<arr.length;i++) System.out.println(arr[i]); 如果字符串32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg中,每个B的后面,下一个A的前面还有B,但还是想要之前的结果,由改如何处理呢?新的字符串如下:32FAfetB1B243A243BB3457AfwBgrB4AewjB3gB6hhAddB345BgAdefBB34tg http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm String[] arr = str.split("(^|B)[^B]+?(A|$)");这样吧. 如果字符串32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg中,每个B的后面,下一个A的前面还有B,但还是想要之前的结果,由改如何处理呢?新的字符串如下: 32FAfetB1B243A243BB3457AfwBgrB4AewjB3gB6hhAddB345BgAdefBB34tg_________________________________________要求不明确!例如:第一组是fet呢?还是fetB1? ArrayList resultList=new ArrayList(); String str="32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg"; int index_A=str.indexOf("A"); int index_B=str.indexOf("B"); String remainStr=str; while(index_A!=-1&&index_B!=-1){ if(index_B<index_A){ String strSub=remainStr.substring(index_A); index_A=0; index_B=remainStr.indexOf("B"); continue; } String strSub=remainStr.substring(index_A+1,index_B); resultList.add(strSub); remainStr=remainStr.substring(index_B+1); index_A=remainStr.indexOf("A"); index_B=remainStr.indexOf("B"); }结果存在resultList里面。比较烦,应该有更好的办法。 正则似乎不快....我正则不好,都是能不用就不用的...StringBuffer配合其方法应该是最好的...不过复杂点的判断都离不开正则,15楼的最简洁,继续膜拜喵~~~~ String[] arr = str.split("(^ ¦B)[^B]+?(A ¦$)"); 支持~` 正解如下: String str = "32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tbg"; str=str.replaceAll("^[\\w&&[^B]]*[A]|[B][\\w&&[^B]]*$", "");//去除头尾字符 System.out.println(str); String strs[] = str.split("[B][\\w&&[^B]]*[A]"); //截取A B 中间字符 System.out.println(strs.length); for(int i=0;i<strs.length;i++){ System.out.println(strs[i]); } 如何用jdom解析xml java创建多线程的方法 如何阻止键盘对JTextArea的输入 如何实现客服端文件生成?求救 java基础问题 有谁了解手机游戏的开发?是不是只能用java? j2me? 请问如何接受JTextField的整型数据??? Reader的ready()方法是干什么用的? 求大神帮忙:java带pfx证书获取https内容 简单问题,在线等你. java高手来帮帮我 求教jsp中如何显示最近浏览过的信息。
{
String str = "32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg";
str = str.substring(str.indexOf("A") + 1, str.lastIndexOf("B"));
String[] strs = str.split("B.*?A");
System.out.println(str);
for (int i = 0; i < strs.length; i++)
{
System.out.println(strs[i]);
}
}
然后用split()把B和A之间的吃了喵...
最后split()返回的数组就是答案了喵...
Pattern p = Pattern.compile("A[^A]+B",Pattern.CASE_INSENSITIVE|Pattern.MULTILINE);
Matcher ma = p.matcher(Content);
while(ma.find()
Content=ma.replaceFirst(SelectValue);
String[] arr = str.split("(^|B)[^B]+?A|B[^A]+?(A|$)");
for(int i=0;i<arr.length;i++)
System.out.println(arr[i]);
32FAfetB1B243A243BB3457AfwBgrB4AewjB3gB6hhAddB345BgAdefBB34tg
这样吧.
32FAfetB1B243A243BB3457AfwBgrB4AewjB3gB6hhAddB345BgAdefBB34tg
_________________________________________要求不明确!
例如:第一组是fet呢?还是fetB1?
String str="32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tg";
int index_A=str.indexOf("A");
int index_B=str.indexOf("B");
String remainStr=str;
while(index_A!=-1&&index_B!=-1){
if(index_B<index_A){
String strSub=remainStr.substring(index_A);
index_A=0;
index_B=remainStr.indexOf("B");
continue;
}
String strSub=remainStr.substring(index_A+1,index_B);
resultList.add(strSub);
remainStr=remainStr.substring(index_B+1);
index_A=remainStr.indexOf("A");
index_B=remainStr.indexOf("B");
}结果存在resultList里面。比较烦,应该有更好的办法。
StringBuffer配合其方法应该是最好的...不过复杂点的判断都离不开正则,15楼的最简洁,继续膜拜喵~~~~
支持~`
String str = "32FAfetB1243A243B3457AfwBgr4AewjB3g6hhAddB345gAdefB34tbg";
str=str.replaceAll("^[\\w&&[^B]]*[A]|[B][\\w&&[^B]]*$", "");//去除头尾字符
System.out.println(str);
String strs[] = str.split("[B][\\w&&[^B]]*[A]"); //截取A B 中间字符
System.out.println(strs.length);
for(int i=0;i<strs.length;i++){
System.out.println(strs[i]);
}