用正则表达式看看怎么样 代码如下 public class Test { public Test() { } public static void main(String[] args) { String str="010@ajjjjjjjjj-020@blllllllll-030@chhhhhhhhhhh"; args=str.split("\\-?\\d{3}@"); for(int i=1;i<args.length;i++) System.out.println(args[i]); } 如果达不到你的目的请告诉我改进~
String[] a = s.split("-");
for(int i = 0;i<a.length;i++)
{
a[i]=a[i].substring(a[i].indexOf("@")+1);
System.out.println(a[i]);
}
String p="(\\S){3}+@\\S";
String s1=s.replaceAll(p,"");
String[] s2=s1.split("-");
for(int i=0;i<s2.length;i++)
System.out.println(s2[i]);
希望是下面这个思路的--
那010@a进去比较,取010@a到-中间的字符串,再拿020@b进去比较...依次类推字符串里面不是每个xxx@x都有(比如第一个字符串有010@a,但是第二个字符串里却没有010@a)而且每个取出来后放的位置都不一定相同,需要的值也不相同,所以只能一个一个的取!
希望能得到最简单的方法或者粗略代码,谢谢!
继续在线等待!!!
上面的xxx@x有40多个,只取其中的28个
把中间的xxx@x和-之间的取出来,顺序如下。其中没有的就不取200@A 1
200@b 2
200@d 3
200@e 4
200@f 5
200@g 6
205@a 7
205@f 8
206@a,207@a,208@a,230@a 9-12
210@a 13
210@c 14
210@d 15
210@g 16
210@e 17
210@h 18
215@a 19
215@c 20
215@d 21
215@e 22
225@a 23
225@e 24
225@f 25
225@h 26
010@a 27
010@d 28一共有8万多个这样的字符串所以我的思路是先那200@A进去比较,取得200@A到-中间的字符串,再拿200@b进去比较...依次类推
代码如下
public class Test {
public Test() {
}
public static void main(String[] args) {
String str="010@ajjjjjjjjj-020@blllllllll-030@chhhhhhhhhhh";
args=str.split("\\-?\\d{3}@");
for(int i=1;i<args.length;i++)
System.out.println(args[i]);
}
如果达不到你的目的请告诉我改进~
因为每个 xxx@x 都是不一样的,不能单一的以@来取
所以必须把每个xxx@x都做一次比较,取出其中的值,再拿下一个xxx@x进去比较!
StringTokenizer token=new StringTokenizer(str,"-");
String temp;
while(token.hasMoreTokens()){
temp=token.nextToken();
System.out.print(temp.substring(temp.indexof('@')+1))
}
330@a这是一本关于行走的书。它的作者群是一批被称为“驴”的自助旅行者,不在路上的日@-997@aH-540@A这里连续出了好几个@,但-对应不上
实在没有好的解决办法就只有用笨办法了
一个个的取吧
如果是有别的规律的就好办了~
他里面每个字符串的排序规则和我需要的排序又是不一样的!
而且两个字符串的排序都是不一样的!
希望能想出点办法的朋友帮个忙!写个代码把我前面给的那个字符串取出来就可以了,谢谢大家!public class Test {
public Test() {
}
public static void main(String[] args)
{
String str="010@ajjjjjjjjj-020@blllllllll-030@chhhhhhhhhhh";
args=str.split("010@a");
String[] b=args[1].split("-");
String c=b[0];
System.out.println(c);
}
}
我用这个办法取,如果args=str.split("010@b");的时候会出现数组越界,也就是没找到匹配的字符,哭啊~
比如997@aH-就是取出H~
反正就是每个xxx@x和“-”之间的就是我要取的,不管是什么东西的说!
从215@c开始,取“插图”还是一直取到“*”?你用这个"-"做分隔符,并不合适
如果数据里已经有了"-",很容易混淆的
String str="010@ajjjjjjjjj-020@blllllllll-030@chhhhhhhhhhh";
args=str.split("\\-?\\d{3}@[a-zA-Z]");
for(int i=1;i<args.length;i++)
System.out.println(args[i]);
就比如上面的字符串,我要得到hhhhhhhhhhhhhjjjjjjjjjjjjjjj,但是不能把他分解成1个字符串数组,按照他在数组中的顺序来排
必须取出030@c到他后面的第一个-,然后再取010@a到她后面的第一个-,...依次类推了,前面已经说了有40多个xxx@x只取其中的28个!前面有一个数据的例子,和排列顺序!
谢谢!
用split()分解成字符串比较的话,如果你比对的字符在字符串里没找到会报数组越界
因为我的每个xxx@x.....都是在数据库里的相同ID的所有DATA取出来的!因为是服务器和客户端的通信,为的是减少服务器端的的操作,这样确实能提高N倍获得数据的时间!
在一个字符串里面的所有xxx@x是无序排列的~~关键就在他是无序的!!!
无规律可寻,只能一个一个的取了!
需要考虑其中有的 xxx@x是没有的!
比如说没有"010@a -",应该怎么弄!
如果全都有的话,倒是能取出来了,但是现在遇到没有的就会报数组越界!
String[] val = {"200@A", "200@b", "200@d", "200@e", "200@f", "200@g", "205@a", "205@f", "206@a", "207@a", "208@a", "230@a",
"210@a", "210@c", "210@d", "210@g", "210@e", "210@h", "215@a", "215@c", "215@d", "215@e", "225@a", "225@e", "225@f", "225@h", "010@a", "010@d"};String str = "701@4编著-200@f浪子燕青,无家的人,闲适人生,稻糠木,师嫣编著-215@a204页-330@a这是一本关于";int index = str.indexOf('@');
int index2 = str.indexOf('-', index + 1);HashMap map = new HashMap();
while (index > 2 && index2 > 0) {
String key = str.substring(index - 3, index + 2);
String value = str.substring(index + 2, index2);
map.put(key, value);
index = str.indexOf('@', index2 + 1);
if (index > 0) {
index2 = str.indexOf('-', index + 1);
}
}
System.out.println(map.get(val[4]));
难道你是传说中的美女,小生在次谢过了!