java提取字符串,刚学的,求帮助

_Liaoj 发布于 2012/03/14 21:51
阅读 459
收藏 0
package edu.lovo.lsj;

import java.util.StringTokenizer;

public class StringDm {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s="message:ends/sbi:start:message;1000;400;lsj;jkdi34;ends/";
		String start="sbi:start";
		String end="ends/";
		int  st=s.indexOf(start)+start.length();
		System.out.println(st);   //显示最开始标记的位置
		int ed=s.lastIndexOf(end);
		System.out.println(ed);   //显示最后标记的位置
		
		String[] ms=new String[5];
		StringTokenizer sti=new StringTokenizer(s,";");//解析s中的“;”标记符

		System.out.println(sti.nextToken().indexOf(";"));//返回此 string tokenizer 的字符串中的下一个标记
		
		System.out.println(ms);
		int i=0;
		
		
	}

}

写不下去了,提取message
1000
400
lsj
jkdi34

这5条子字符串。我们老师说用for,我没办法了。

加载中
0
Jeky
Jeky
    public static void main(String[] args) {
        String s = "message:ends/sbi:start:message;1000;400;lsj;jkdi34;ends/";
        String start = "sbi:start:";
        String end = "ends/";
        int st = s.indexOf(start) + start.length();
        System.out.println(st);   //显示最开始标记的位置
        int ed = s.lastIndexOf(end);
        System.out.println(ed);   //显示最后标记的位置

        StringTokenizer sti = new StringTokenizer(s.substring(st, ed), ";");//解析s中的“;”标记符
        String[] ms = new String[sti.countTokens()];
        for (int i = 0; i < ms.length; i++) {
            ms[i] = sti.nextToken();
        }
        System.out.println(Arrays.toString(ms));
    }

我猜你大概是这个意思,多熟悉熟悉API就好了
0
m
marslei

我用正则做的

package www.marslei.com;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Utils {

	public static void main(String[] args) {
		String s="message:ends/sbi:start:message;1000;400;lsj;jkdi34;ends/";
		Pattern pattern=Pattern.compile("(?<=:|;)[^;:]+(?=;)");
		Matcher matcher=pattern.matcher(s);
		while (matcher.find()) {
			System.out.println(matcher.group());
		}
	}

}

0
_Liaoj
_Liaoj
package edu.lovo.lsj;

import java.util.StringTokenizer;

public class Start {
	
	public static void main(String[] strs){
		new Start().parxyMessage();
	}
	
	public void parxyMessage(){
		String mes = "message:end:/sbi:start:message;1000;600;username;password:end:/";
		String s = "sbi:start:";
		
		int start = mes.indexOf(s) + s.length();
		int end = mes.lastIndexOf(":end:/");
		
		String message = mes.substring(start,end);//message,1000,600,username,password
		
		StringTokenizer stz = new StringTokenizer(message,";");
		
		String[] mess = new String[5];
		int i = 0;
		
		while(stz.hasMoreTokens())
			mess[i++] = stz.nextToken();
		
		
		if(null == mess[3] || mess[3].trim().length() <= 0 || null == mess[4] || mess[4].trim().length() <= 0){
			System.out.println("协议判断信息不完整");
			System.exit(0);
		}
		else{
			if(mess[3].equals("username") && mess[4].equals("password")){
				System.out.println("欢迎用户 : " + mess[3]);
				doMessage(mess);
			}else{
				System.out.println("协议用户信息不正确");
				System.exit(0);
			}
		}
		
	}

	private void doMessage(String[] mess) {
		if(mess[1].matches("[0-9]+") && mess[2].matches("[0-9]+")){
			int i = Integer.parseInt(mess[1]);
			int j = Integer.parseInt(mess[2]);
			
			int a = i - j;
			if(a < 0){
				System.out.println("用户你的余额已透支,请及时充值,24小时充值帐号:");
			}else{
				System.out.println("用户你余额还有:" + a + "元");
			}
		}else{
			System.out.println("协议资金信息不正确");
			System.exit(0);
		}
	}

}

嘿嘿。。。老师给我们写出来了。。谢谢楼上的两位。
0
_Liaoj
_Liaoj

引用来自“Jeky”的答案

    public static void main(String[] args) {
        String s = "message:ends/sbi:start:message;1000;400;lsj;jkdi34;ends/";
        String start = "sbi:start:";
        String end = "ends/";
        int st = s.indexOf(start) + start.length();
        System.out.println(st);   //显示最开始标记的位置
        int ed = s.lastIndexOf(end);
        System.out.println(ed);   //显示最后标记的位置

        StringTokenizer sti = new StringTokenizer(s.substring(st, ed), ";");//解析s中的“;”标记符
        String[] ms = new String[sti.countTokens()];
        for (int i = 0; i < ms.length; i++) {
            ms[i] = sti.nextToken();
        }
        System.out.println(Arrays.toString(ms));
    }

我猜你大概是这个意思,多熟悉熟悉API就好了
嗯。
返回顶部
顶部