2016-10-28 50 views
-3

提取逗號分隔值在Java中我有這樣的字符串:如何從字符串

[comment=null, mapping={client_unique_id=0, email=1, first_name=2, last_name=3, batch_id=4}, recordNumber=2, values=[sdsd, asdsdf.com, jjj, hhh, 24]] 

現在我需要只獲取sdsd,asdsdf.com,JJJ,HHH,從值24。 我怎麼能這樣做?

+0

嘗試使用拆分或正則表達式 –

+0

@XYz阿莫斯,但我需要串僅在值分割關鍵 – dafodil

+0

當心順序。如果String由HashMap生成 - 其元素的順序不能保證,並且可以隨時更改。 –

回答

0

假設你的字符串是

String str = "sdsd, asdsdf.com, jjj, hhh, 24"; 

而且要通過逗號此字符串分離生成一個數組,你可以通過

String[] strArray = str.split(", "); 

現在就這樣做你會得到一個數組像"sdsd", "asdsdf.com", "jjj", "hhh", "24"這樣的字符串。

1

使用正則表達式

values=\[(.*)\] 

然後,你需要從這場比賽獲得第1組。該組是:

0: values=[sdsd, asdsdf.com, jjj, hhh, 24] 
1: sdsd, asdsdf.com, jjj, hhh, 24 

試試這個

 Pattern compile = Pattern.compile("values=\\[(.*)\\]"); 
     Matcher matcher = compile.matcher("[comment=null, mapping={client_unique_id=0, email=1, first_name=2, last_name=3, batch_id=4}, recordNumber=2, values=[sdsd, asdsdf.com, jjj, hhh, 24]]"); 
     if (matcher.find()) { 
      return matcher.group(1); 
     } 
     return null; 
1

假設,

str = "[comment=null, mapping={client_unique_id=0, email=1, first_name=2, last_name=3, batch_id=4}, recordNumber=2, values=[sdsd, asdsdf.com, jjj, hhh, 24]]"; 

讓 - SSDD,asdsdf.com,JJJ,HHH,24使用本 -

String result = str.split("values=[")[1].split("]")[0]; 
0

一些簡單的方法可以是使用剛剛職能省由java.lang.String標識。這將做到這一點。

公共類StringTest {

public String[] getValues(String content, String searchString) { 

    // where does my search String start within the content? 
    int valuesPosition = content.indexOf(searchString); 

    // we have to separate the content, we are looking for 
    String values = content.substring(valuesPosition + searchString.length() + 1, content.length() - 2); 

    // the split-Method does exactly, what we want and creates an array of our single comma separated fields 
    String[] singleValues = values.split(","); 
    return singleValues; 
} 

public static void main(String args[]) { 
    StringTest stringTest = new StringTest(); 
    String content = "[comment=null, mapping={client_unique_id=0, email=1, first_name=2, last_name=3, batch_id=4}, recordNumber=2, values=[sdsd, asdsdf.com, jjj, hhh, 24]]"; 
    String searchString = "values="; 

    String v[] = stringTest.getValues(content, searchString); 

    System.out.println("it contains " + v.length + " Elements:"); 
    for (String v1 : v) { 

     // by the trim()- method, we eliminate white spaces. 
     System.out.println(v1.trim()); 
    } 
} 

}