1

我有以下字符串

String S1="S1_T1_VIEW";

我希望它被拆分并分配给这样的字符串:

String permission = "VIEW";
String component = "S1_T1";
String parent = "S1";

我尝试使用 usingS1.split() 功能,但没有多大帮助。

字符串也可以这样

String S1="S1_T1_C1_DELETE";

那个时候的结果应该是

String permission = "DELETE";
String component = "S1_T1_C1";
String parent = "S1_T1";

任何的意见都将会有帮助 。

提前致谢

4

2 回答 2

7

我假设以下内容:

  • permissionS1跟在最后一个下划线之后的部分。
  • componentS1是最后一个下划线之前的部分。
  • parent是最后一个下划线component之前部分。

如果是这样,请尝试以下方法,也许?这本质上只是对上述规则的字面解释,通过找到适当的下划线来拆分字符串。

int lastUnderscore = S1.lastIndexOf("_");
String permission = S1.substring(lastUnderscore + 1);
String component = S1.substring(0, lastUnderscore);
lastUnderscore = component.lastIndexof("_");
String parent = component.substring(0, lastUnderscore);
于 2013-05-17T07:15:22.257 回答
5

我们也可以使用正则表达式。

private static final Pattern pattern = Pattern.compile("^((.+)_[^_]+)_([^_]+)$");

    final Matcher matcher = pattern.matcher(input);
    if (!matcher.matches()) {
        return null;
    }

    String permission = matcher.group(3);
    String component = matcher.group(1);
    String parent = matcher.group(2);

演示:http: //ideone.com/NhZPI2

于 2013-05-17T07:21:30.363 回答