Java 拆分字符串(“”“作为分隔符)
我有下面的字符串Java 拆分字符串(“”“作为分隔符),java,string,parsing,Java,String,Parsing,我有下面的字符串 String S1="S1_T1_VIEW"; 我希望将其拆分并分配给字符串,如下所示: String permission = "VIEW"; String component = "S1_T1"; String parent = "S1"; 我尝试使用S1.split函数,但没有多大帮助 字符串也可以是这样 String S1="S1_T1_C1_DELETE"; 那时候的结果应该是 String permission = "DELETE"; String compo
String S1="S1_T1_VIEW";
我希望将其拆分并分配给字符串,如下所示:
String permission = "VIEW";
String component = "S1_T1";
String parent = "S1";
我尝试使用S1.split函数,但没有多大帮助
字符串也可以是这样
String S1="S1_T1_C1_DELETE";
那时候的结果应该是
String permission = "DELETE";
String component = "S1_T1_C1";
String parent = "S1_T1";
任何建议都会有帮助
提前感谢我假设: 权限是最后一条下划线后面的S1部分。 组件是最后一个下划线之前的S1部分。 父级是组件的最后一个下划线之前的部分。 如果是这样,或许可以尝试以下方法?这本质上只是对上述规则的字面解释,通过找到适当的下划线来拆分字符串
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);
我假设如下: 权限是最后一条下划线后面的S1部分。 组件是最后一个下划线之前的S1部分。 父级是组件的最后一个下划线之前的部分。 如果是这样,或许可以尝试以下方法?这本质上只是对上述规则的字面解释,通过找到适当的下划线来拆分字符串
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);
我们也可以使用正则表达式
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);
演示:我们也可以使用正则表达式
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);
演示:只有这两种或更多类型的字符串?规则是什么?许可总是最后一部分吗?组件是除最后一部分以外的所有组件的组合吗?parent是组件的最后一个吗?@mhasan权限前的字符串长度可能会有所不同,但它总是用下划线分隔,并遵循相同的约定,如权限前的sting总是分配给组件,parent将在两个结束下划线之前字符串。我想说正则表达式。给定的案例可以很简单地匹配-它是否始终有效?你能理解/维护正则表达式吗?@LutzHorn是的,确切地说是这两种或更多类型的字符串?规则是什么?许可总是最后一部分吗?组件是除最后一部分以外的所有组件的组合吗?parent是组件的最后一个吗?@mhasan权限前的字符串长度可能会有所不同,但它总是用下划线分隔,并遵循相同的约定,如权限前的sting总是分配给组件,parent将在两个结束下划线之前字符串。我想说正则表达式。给定的案例可以很简单地匹配-它是否始终有效?你能理解/维护正则表达式吗?@LutzHorn是的,没错,你也能做到。如果这成为一个问题,它肯定会比我的方法更灵活地处理更复杂的模式。是的,你也可以这样做。如果这成为一个问题,那么对于更复杂的模式,它肯定比我的方法更灵活。