2014-04-28 260 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====]