正则表达式:在第二个“ - ”之前和之后删除所有

时间:2016-01-12 13:49:34

标签: java android regex

美好的一天,我有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:替换所有内容,并在第三个-之后删除所有内容。如何使用正则表达式实现它?

4 个答案:

答案 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])