Если формат входных данных соответствует, то вы можете просто использовать шаблон :
и сделайте следующее:
public static void main(String[] args) {
/* Scan Inputs */
Scanner in = new Scanner(System.in);
/* Input String */
String input = null;
/* Create StringBuilder Object */
StringBuilder builder = new StringBuilder();
String[] headers = { "home_name: ", "away_name: ", "home_score: ",
"away_score: " };
while (null != (input = in.nextLine())) {
/* Break if user enters stop */
if ("stop".equalsIgnoreCase(input)) {
break;
}
/* Trim the first and the last character from input string */
input = input.substring(1, input.length() - 1);
/* Split the input string using the required pattern */
String tokens[] = input.split(" : ");
/* Print the tokens array consisting the result */
for (int x = 0; x < tokens.length; x++) {
builder.append(headers[x]).append(tokens[x]).append(" | ");
}
builder.append("\n");
}
/* Print Results & Close Scanner */
System.out.println(builder.toString());
in.close();
}
Обратите внимание, что здесь я использовал substring()
функцию, чтобы избавиться от <
и >
в начало и конец входной строки перед ее разбиением с использованием заданного шаблона.
Вход:
<manchester united : chelsea : 3 : 2>
<foobar : foo : 5 : 3>
stop
Выход:
home_name: manchester united | away_name: chelsea | home_score: 3 | away_score: 2 |
home_name: foobar | away_name: foo | home_score: 5 | away_score: 3 |
токенизатор или .split функция –
Как [это] (HTTP: // StackOverflow .com/вопросы/3481828/как к сплит-а-строка-в-Java). Но есть ли у вас контроль над процессом ввода? Эта длинная строка кажется сложной/подверженной ошибкам. –
Нет, это вопрос, который я пытаюсь развернуть, вход должен быть в одной строке и в указанном формате, например, типичный ввод будет выглядеть как manchester united: chelsea: 3: 2 – gv555