如果出现的次数不超过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]