如果出现的次数不超过4,我想跳过首次出现的内容。现在,我将最多获得5个下划线出现的内容。我需要产生输出A_B,C,D,E,F,我确实使用下面的代码。我想要更好的解决方案。请检查并让我知道。提前致谢。

String key = "A_B_C_D_E_F";
int occurance = StringUtils.countOccurrencesOf(key, "_");
System.out.println(occurance);
String[] keyValues = null;
if(occurance == 5){
    key = key.replaceFirst("_", "-");
    keyValues = StringUtils.tokenizeToStringArray(key, "_");
    keyValues[0] = replaceOnce(keyValues[0], "-", "_");
}else{
    keyValues = StringUtils.tokenizeToStringArray(key, "_");
}

for(String keyValue : keyValues){
    System.out.println(keyValue);
}

最佳答案

您可以使用此正则表达式进行拆分:

String s = "A_B_C_D_E_F";
String[] list = s.split("(?<=_[A-Z])_");


输出:


  [A_B,C,D,E,F]


这个想法是只匹配以_开头的"_[A-Z]",它实际上仅跳过第一个。

如果您考虑的字符串在"_"之间的格式不同,则必须用相应的正则表达式替换[A-Z]

08-04 03:01