美好的一天,我有Strings
:
"bus-nr-7b-Station-Yellow-Street",
"bus-nr-8-Station-Lewis-Street",
"train-nr-9-Station-Yield-Street",
"bus-nr-10-Station-Harrow",
"train-nr-10a-Station-Booki",
"train-nr-11-Station-Horope",
"bus-nr-12-Station-Erstin",
"bus-nr-13-Station-Green-Street",
"train-nr-13ab-Station-Final-Station",
最后我想:
"B:7b",
"B:8",
"T:9",
"B:10",
"T:10a",
"T:11",
"B:12",
"B:13",
"T:13ab",
因此,我想在第二个-
之前用B:
或T:
替换所有内容,并在第三个-
之后删除所有内容。如何使用正则表达式实现它?
答案 0 :(得分:1)
在你的情况下不使用正则表达式会更快:
String foo = "bus-nr-7b-Station-Yellow-Street";
String[] parts = foo.split("-");
String result = Character.toUpperCase(foo.charAt(0)) + ":" + parts[2];
答案 1 :(得分:0)
匹配:
^([bt])[^-]*-[^-]*-([^-]*)
结果:
match.group(1).toUpperCase() + ":" + match.group(2)
答案 2 :(得分:0)
您不需要使用正则表达式。
for (String str : strings) {
String prefix;
if (str.startsWith("bus")) { prefix = "B"; }
else if (str.startsWith("train")) { prefix = "T"; }
else throw new AssertionError("Not bus or train");
int firstDash = str.indexOf("-");
int secondDash = str.indexOf("-", firstDash + 1);
int thirdDash = str.indexOf("-", secondDash + 1);
System.out.println(prefix + ":" + str.substring(secondDash, thirdDash));
}
答案 3 :(得分:0)
假设s
是一行文字。
假设文件中的文字有效。
s.substring(0, 1).toUpperCase() + ":" + s.split("-")[2])