У меня есть строка с неизвестной длиной, которая выглядит так:
a ,b, c: integer; d,e :real;
Как я мог разделить это на запятые, не получая слов и символов, которые следуют за последними запятыми переменных? Или есть способ разделить переменные в запятых после того, как он находится в массиве от расщепления в двоеточие? Ближайший я пришел с этим методом
// the variablesArray would contain a ,b, c in the first index
// and d,e in the second index.
public static String[] variables(String[]variablesArray) {
String variables[] = new String[variablesArray.length];
for(int i = 0; i < variablesArray.length; i++){
String temporary = variablesArray[i];
String arr[] = temporary.split(",");
}
return variables;
}
Когда я запускаю это, он возвращает только первый символ в индексе массива
//prints [ad]
это то, чего ты хочешь?
String[] result = s.replaceAll("\\w{2,}", "").replaceAll("[:;,]"," ").replaceAll("\\u0020+"," ").split(" ");
result
массива теперь содержит только отдельные символы. Тестирование с помощью:
for(String c: array)
System.out.println(c);
выведет:
a
b
c
d
e
если myString
равно "a ,b, c: integer; d,e :real;"
следующее с выходом abcde
for (String type : myString.split(";")) {
String sub = type.substring(0, type.indexOf(":"));
for (String name : sub.split(",")) {
System.out.println(name);
}
}
Вам нужно сломать проблему:
;
,:
Обратите внимание, что это даст вам массив {"a ,b, c", "d,e"}
как я понимаю из вашего вопроса, что вы этого хотите. Если вы хотите разделить, что дальше, вам нужно разделить каждый из этих строк, на этот раз в ,
. Обратите внимание, что в этом случае вам нужно будет изменить тип вашего массива из String[]
в String[][]
. Вы получите {{"a", "b", "c"}, {"d", "e"}}
.
Если вы также хотите удалить пробелы во время процесса разделения, добавьте \s*
до и после разделительного символа. Например: "a, b,c, d".split("\\s*,\\s*")
возвращает {"a", "b", "c", "d"}
.
как насчет следующего?
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
String str = "a ,b,c: integer;d,e :real;";
String[] stra = str.split(";");
for(String st: stra){
//System.out.println(st);
String[] stra2 = st.split(",");
for(String s: stra2){
System.out.println(s);
list.add(String.valueOf(s.charAt(0)));
}
}
System.out.println(list);
}
OP
a
b
c: integer
d
e :real
[a, b, c, d, e]
Я думаю, что у вас есть проблема. temporary.split(",");
это массив, который вы приложили к тому, чтобы быть частью другого массива. Thats troublesome.... Я имею в виду:
Array
0 => Array
0 => a
1 => b
Поэтому вы должны использовать:
String arr = temporary.split(",");