Vous êtes d'abord utilisez ()
comme délimiteurs, puis de passer à ,
, mais vous passez avant d'extraire le premier jeton (le texte entre parenthèses).
Qu'est-ce que vous avez probablement l'intention de faire est la suivante:
transitionInput = data.nextLine();
st = new StringTokenizer(transitionInput,"()", false);
if (st.hasMoreTokens())
{
String chunk = st.nextToken();
st = new StringTokenizer(chunk, ",");
while (st.hasMoreTokens())
{
transition.add(st.nextToken());
}
}
Ce code suppose que l'expression commence et se termine toujours avec des parenthèses. Si tel est le cas, vous pouvez également les supprimer manuellement en utilisant String.substring()
. , Vous pouvez également envisager d'utiliser String.split()
pour faire la séparation réelle:
String transitionInput = data.nextLine();
transitionInput = transitionInput.substring(1, transitionInput.length() - 1);
for (String s : transitionInput.split(","))
transition.add(s);
Notez que les deux exemples supposent que les virgules sont utilisés comme séparateurs, comme dans votre exemple de code (bien que le texte de votre question, dit autrement)
pourriez-vous donner quelques exemples de plus? Est-ce juste le premier et le dernier caractère, alors vous pouvez faire 'input = input.substring (1, input.length() - 1);' – aioobe
que fait la virgule (",") dans votre règle de jeton? – Thilo