str=DeviceBefore:1179,DeviceAfter:889900,ActionBefore:0023,ActionAfter:0993,WordBefore:AJ,WordAfter:Great想整为str2=Device:1179:889900,Action:0023:0993,Word:AJ:Great该怎么做?

解决方案 »

  1.   


    /*
    Before: str=DeviceBefore:1179,DeviceAfter:889900,ActionBefore:0023,ActionAfter:0993,WordBefore:AJ,WordAfter:Great
    After : str2=Device:1179:889900,Action:0023:0993,Word:AJ:Great
    */import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test{
    public static void main(String[] args){
    String content = "DeviceBefore:1179,DeviceAfter:889900,ActionBefore:0023,ActionAfter:0993,WordBefore:AJ,WordAfter:Great";
    String result = process(content);
    System.out.println(result);
    } private static String process(String content){
    String result = "";
    String regex = "^([^:]+?)Before:([^,]+),(?:\\1)After:([^,]+),?(.*)$";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(content); while(matcher.matches()){
    result += matcher.group(1) + ":" + matcher.group(2) + ":" + matcher.group(3) + ",";
    content = matcher.group(4);
    matcher = pattern.matcher(content);
    }
    return result.substring(0,result.length() - 1);
    }
    }
      

  2.   


    result:
    ---------- java ----------
    Device:1179:889900,Action:0023:0993,Word:AJ:GreatOutput completed (0 sec consumed) - Normal Termination
      

  3.   


    String str="DeviceBefore:1179,DeviceAfter:889900,ActionBefore:0023,ActionAfter:0993,WordBefore:AJ,WordAfter:Great";
    String str2="Device:1179:889900,Action:0023:0993,Word:AJ:Great";
    str = str.replaceAll("Before|,DeviceAfter|,ActionAfter|,WordAfter", "");
    System.out.println(str);
    System.out.println(str2);
    输出:
    Device:1179:889900,Action:0023:0993,Word:AJ:Great
    Device:1179:889900,Action:0023:0993,Word:AJ:Great