Это следующий вопрос к этому вопросу: Regex for matching a music Chord, заданный мной.Music Chord part splitting Regex
Теперь у меня есть регулярное выражение, чтобы знать String
представление аккорда, является ли действительным или нет (предыдущий вопрос), как я могу эффективно получить три различные части хорды (в тонику, знаки альтерации и аккорд типа) в отдельные переменные?
Я мог бы делать простые манипуляции с строкой, но я думаю, что было бы проще построить предыдущий код и использовать для этого регулярное выражение или я ошибаюсь?
Вот обновленный код из вышеупомянутого вопроса:
public static void regex(String chord) {
String notes = "^[CDEFGAB]";
String accidentals = "(#|##|b|bb)?";
String chords = "(maj7|maj|min7|min|sus2)";
String regex = notes + accidentals + chords;
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(chord);
System.out.println("regex is " + regex);
if (matcher.find()) {
int i = matcher.start();
int j = matcher.end();
System.out.println("i:" + i + " j:" + j);
}
else {
System.out.println("no match!");
}
}
Спасибо.
+1 - Гораздо лучше, чем мой ответ. –
Догадка, что я был прав, думая, что есть лучший способ, а не строковая манипуляция. спасибо за второй раз сегодня – nunos