我有以下格式的字符串:
[string1][string2][string3][string4][string5][string6]
其中第一个字符串
string1
将始终为Year
,并且其格式将为YYYY
,因此示例示例为:[2010][Toyota][ALL][Hatchback][998ccm 68HP 50KW]
现在在某些情况下,
string1
以2010^K2011^K2012^K2013^K2014^K2015^K2016^K2017
格式出现,其中每年用^K
分隔符分隔。示例示例:[2010^K2011^K2012^K2013^K2014^K2015^K2016^K2017][Toyota][ALL][Hatchback][998ccm 68HP 50KW]
现在,每当我看到以上格式的字符串时,我就必须解析年份字符串并在定界符上分割并提取每个单独的年份,然后以以下格式列出字符串:
[2010][Toyota][ALL][Hatchback][998ccm 68HP 50KW]
[2011][Toyota][ALL][Hatchback][998ccm 68HP 50KW]
[2012][Toyota][ALL][Hatchback][998ccm 68HP 50KW]
[2013][Toyota][ALL][Hatchback][998ccm 68HP 50KW]
[2014][Toyota][ALL][Hatchback][998ccm 68HP 50KW]
[2015][Toyota][ALL][Hatchback][998ccm 68HP 50KW]
[2016][Toyota][ALL][Hatchback][998ccm 68HP 50KW]
[2017][Toyota][ALL][Hatchback][998ccm 68HP 50KW]
所以我可以想到以下情况:
这可能吗?我知道如何在特殊字符
^
上分割字符串,但是混乱的是如何提取string1
并检查它是否有多年(如果是,则将其分割)还是只有一年,还是有其他东西。 public static void main(String[] args) {
// String myString =
// "[2010^K2011^K2012^K2013^K2014^K2015^K2016^K2017][Toyota][ALL][Hatchback][998ccm 68HP 50KW]";
String myString = "[2010][Toyota][ALL][Hatchback][998ccm 68HP 50KW]";
}
最佳答案
我想出了这种方法:
public static String[] splitYears(String str) {
// get the year part of the string using a regex
Matcher m = Pattern.compile("^\\[([\\d^K]+)\\]").matcher(str);
if(m.find()) {
String yearPart = m.group(1);
// separate the other parts. The + 2 here is to account for the two square brackets in the yearPart
String otherParts = str.substring(yearPart.length() + 2);
// split by ^K
String[] years = yearPart.split("\\^K");
// Construct a new string for each year
String[] newYears = new String[years.length];
for (int i = 0; i < years.length; i++) {
newYears[i] = String.format("[%s]%s", years[i], otherParts);
}
return newYears;
} else {
return new String[] {str};
}
}
用法:
System.out.println(Arrays.toString(splitYears("[2010^K2011^K2012^K2013^K2014^K2015^K2016^K2017][Toyota][ALL][Hatchback][998ccm 68HP 50KW]")));