2012-10-19 2 views
0

내 질문 : 매우 구체적입니다. 다음 텍스트를 구문 분석하는 가장 쉬운 방법을 생각하려고합니다.이름 = 값을 파싱하는 방법 ^^ 이름 = 값 ^^ 이름 = 값

^^domain=domain_value^^version=version_value^^account_type=account_type_value^^username=username_value^^password=password_value^^type=type_value^^location=location_value^^id=xxx^^cuid=cuid_value^^ 

언제나 이와 똑같이 나타납니다. 몇 가지 요구 사항 :

  • 모든 키 - 값 쌍이 항상 표시되는 것은 아닙니다.

    private String[] getKeyValueInfo(String allStuff) { 
        String domain = someAwesomeMethod("domain", allStuff); 
        String version = someAwesomeMethod("version", allStuff); 
        String account_type = someAwesomeMethod("account_type", allStuff); 
        String username = someAwesomeMethod("username", allStuff); 
        String password = someAwesomeMethod("password", allStuff); 
        String type = someAwesomeMethod("password", allStuff); 
        String location = someAwesomeMethod("location", allStuff); 
        String id = someAwesomeMethod("id", allStuff); 
        String cuid = someAwesomeMethod("cuid", allStuff); 
        return new String[] {domain, version, account_type, username, password, type, location, id, cuid}; 
    } 
    

    는 내가 모르는 someAwesomeMethod(String key, String allStuff) 포함해야 무엇 :이 같은 코드 뭔가를 찾고 있어요

  • 그들은 다른 순서로 할 수있다.

    제가 생각이 같은 뭔가 :

    private String someAwesomeMethod(String key, String allStuff) { 
        Pattern patt = Pattern.compile("(?i)^^" + key + "=(.*?)^^", Pattern.DOTALL); 
        Matcher matcher = patt.matcher(allStuff); 
        if (matcher.find()) { 
        return matcher.group(1); 
        } 
        return null; 
    } 
    

    무슨 잘못 :

    나는 그것이 내가해야한다면 조금 천천히/성가신 것 걱정 이 일을 많이하십시오. 그래서 나는 어떤 조언이나 제안을 찾고있다. 당신이 그것을 많이 할 경우

  • +1

    나는 ['String.split()'] (http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String .html # split % 28java.lang.String % 29) 보트를 뜨지 않습니까? –

    +0

    @RobertHarvey'.split()'은 여전히 ​​정규 표현식을 사용하기 때문에 여전히 키와 매개 변수를 파싱해야합니다. – NullUserException

    +0

    괜찮습니다. ' "="'를 통해 각 분할을 다시 분할하십시오. –

    답변

    5

    에 대한

    Map<String, String> m = new HashMap<String, String>(); 
    for (String s : stuff.split("\\^\\^")) // caret needs escaping 
    { 
        String[] kv = s.split("="); 
        m.put(kv[0]) = kv[1]; 
    } 
    

    의 라인을 따라 뭔가를 작동합니다 방금 한 키 찾기 m.get("key")

    0

    사항 String.split는()에 다음, 내가지도를 만드는 것, 그

    strVar = /* Your big long string */ 
    String[] vars = strVar.split("\\^\\^"); // needs escaping 
    
    관련 문제