比如这样一个字符串
String a = "你好,今天是@2015@年@7@月@15@日";
String b = "时间为@16@@:@@05@";
怎么样截取2个一对的@中间的字符串 a = 2015,7,15 b = 16,:,05
public static String getResult(String str,String splitStr){
String[] arr = ("1"+str+"1").split(splitStr);
StringBuilder sd = new StringBuilder();
for(int i=1;i<arr.length-1;i++){
sd.append(arr[i]);
}
return sd.toString();
}
public static void main(String[] args) {
String a = "你好,今天是@2015@年@7@月@15@日";
String b = "时间为@16@@:@@05@";
a = getResult(a,"@");
b = getResult(b,"@");
System.out.println("a="+a);
System.out.println("b="+b);
}
另一个例子
你好,请你明天@15@点到@XXXX地点@等我,我有@XXXX事情@和你说, 我需要的是 15 XXXX地点 XXXX事情
String [] str = a.split("@")分割吧
import java.util.regex.Pattern;
public class Demo {
private static final String REGEX = "\@[^@]+@";
private static final String a = "你好,今天是@2015@年@7@月@15@日";
private static final String b = "时间为@16@@:@@05@";
public static void main(String[] args) {
Pattern p = Pattern.compile(REGEX);
String[] items = p.split(a);
for(String s : items) {
System.out.println(s);
}
String[] items = p.split(b);
for(String s : items) {
System.out.println(s);
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "你好,今天是@2015@年@7@月@15@日";
String b ="时间为@16@@:@@05@";
a=getStrBySplit(a, "@");
b=getStrBySplit(b, "@");
System.out.println(a);
System.out.println(b);
}
public static String getStrBySplit(String str,String str1){
StringBuilder sb=new StringBuilder();
List list1=new ArrayList();
//获取每个@在字符串里的索引
for (int i = 0; i < str.length(); i++) {
char item=str.charAt(i);
if(str1.equals(String.valueOf(item))){
list1.add(i);
}
}
//每两个索引存放一次
List<Map<String,Integer>> list2=new ArrayList();
Map map=new HashMap();
int j=0;
for (int i = 0; i < list1.size(); i++) {
j+=1;
map.put(String.valueOf(j), (Integer)list1.get(i));
if(j==2){
list2.add(map);
j=0;
map=new HashMap();
}
}
//截取和拼接
for (Map map1 : list2) {
String substring = str.substring(((Integer)map1.get("1"))+1,(Integer)map1.get("2"));
sb.append(substring);
sb.append(",");
}
str = sb.toString().substring(0,sb.toString().length()-1);
return str;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "你好,今天是@2015@年@7@月@15@日";
String b ="时间为@16@@:@@05@";
a=getStrBySplit(a, "@");
b=getStrBySplit(b, "@");
System.out.println(a);
System.out.println(b);
}
public static String getStrBySplit(String str,String str1){
StringBuilder sb=new StringBuilder();
List list1=new ArrayList();
//获取每个@在字符串里的索引
for (int i = 0; i < str.length(); i++) {
char item=str.charAt(i);
if(str1.equals(String.valueOf(item))){
list1.add(i);
}
}
//每两个索引存放一次
List<Map<String,Integer>> list2=new ArrayList();
Map map=new HashMap();
int j=0;
for (int i = 0; i < list1.size(); i++) {
j+=1;
map.put(String.valueOf(j), (Integer)list1.get(i));
if(j==2){
list2.add(map);
j=0;
map=new HashMap();
}
}
//截取和拼接
for (Map map1 : list2) {
String substring = str.substring(((Integer)map1.get("1"))+1,(Integer)map1.get("2"));
sb.append(substring);
sb.append(",");
}
str = sb.toString().substring(0,sb.toString().length()-1);
return str;
}
重新发下 代码页点错
楼上的一个个麻烦的要死,用split(“@”),来截取,debug一下看你要的数据在什么位置,然后a[i]就能取到你想要的值,然后拼接一下就ok