2014-04-28 251 views
0

我有String作爲param1=HUvguys83789r8====我必須將其與=分隔符分開。我已經嘗試過String.split("=")以及我也使用過StringUtils,但我無法正確分割它。有人能幫我解決這個問題嗎?用分隔符分隔字符串

String parameters = "param1=HUvguys83789r8====" 
String[] string = StringUtils.split(parameters, "="); 
parameters.split("="); 

,我得到了我的輸出爲[param1, HUvguys83789r8]

我需要的輸出[param1, HUvguys83789r8====]

+0

你期望的輸出? –

+0

@ashokramcse你期望什麼 –

+0

無論你得到的只是正確的,它在'=' – aelor

回答

3

你真的只想分裂上的=的第一次出現,所以這樣做

parameters.split("=", 2) 

重載split(String, int) javadoc的狀態

如果限制n大於零,則該模式將至多n施加 - 1次,數組的長度將不會大於n,並且 該數組的最後一個條目將包含除最後匹配的 分隔符之外的所有輸入。

1

我認爲你需要:

String parameters = "param1=HUvguys83789r8===="; 
    String[] string = parameters.split("\\w=\\w"); 
    String part1 = string[0]; // param 
    String part2 = string[1]; // Uvguys83789r8==== 
    System.out.println(part1); 
    System.out.println(part2); 

確保逃生斜線使它的java合規

+0

你可以發佈你的答案更清楚,因爲.split(/ \ w = \ w /)不清楚 – ashokramcse

+1

@ashokramcse更新了答案,以使其更清晰 – aelor

2

我會用String#indexOf(char ch)像這樣,

private static String[] splitParam(String in) { 
    int p = in.indexOf('='); 
    if (p > -1) { 
    String key = in.substring(0, p); 
    String value = in.substring(p + 1); 
    return new String[] {key, value}; 
    } 
    return null; 
} 

public static void main(String[] args) { 
    String parameters = "param1=HUvguys83789r8===="; 
    System.out.println(Arrays.toString(splitParam(parameters))); 
} 

輸出是

[param1, HUvguys83789r8====] 
+0

+ +1爲簡單的解決方案,可以在六個月內返回代碼時理解。 –

+0

@ Java1這看起來簡單嗎? imo分裂更簡單 – aelor

+0

@aelor'split'很容易,接受的答案很好。當一個簡單的解決方案存在時,我只是遇到了一個難以記住正則表達式的問題。六個月後,'啊,那又是什麼意思'\\ w = \\ w'再次意味着' –

2

只需劃分一次使用的split()了另一個版本:

String[] strings = parameters.split("=", 2); // specify max 2 parts 

測試代碼:

String parameters = "param1=HUvguys83789r8===="; 
String[] strings = parameters.split("=",2); 
System.out.println(Arrays.toString(strings)); 

輸出:

[param1, HUvguys83789r8====]