Хотя в наши дни это сильно ненавидит, мне все еще очень нравится StringTokenizer для такого рода вещей. Вы можете настроить его так, чтобы он возвращал токены, и, по крайней мере для меня, он делает обработку тривиальной, не взаимодействуя с регулярными выражениями
Вы должны создать его, используя ", - в качестве своих токенов, а затем просто запустить его в цикле.
st=new StringTokenizer(line, "\",-", true);
Затем вы настраиваете цикл:
while(st.hasNextToken()) {
String token=st.nextToken();
Каждый кейс становится своей маленькой частью цикла:
// Use punctuation to set flags that tell you how to interpret the numbers.
if(token == "\"") {
isQuoted = !isQuoted;
} else if(token == ",") {
...
} else if(...) {
...
} else { // The punctuation has been dealt with, must be a number group
// Apply flags to determine how to parse this number.
}
Я понимаю, что StringTokenizer уже устарел, но я не совсем уверен, почему. Парсинг регулярных выражений не может быть быстрее, и синтаксис - хорошо разделенный - довольно приятный синтаксис, который я должен признать.
Полагаю, если вам и всем, с кем вы работаете, действительно удобно с Регулярными выражениями, вы можете заменить это на split и просто перебрать результирующий массив, но я не уверен, как получить split, чтобы вернуть пунктуацию - возможно, это " + "вещь из других ответов, но я никогда не верю, что какой-то персонаж, который я передаю регулярному выражению, не сделает что-то совершенно неожиданное.