Разделение строки через запятую в Java

1

У меня есть строка с неизвестной длиной, которая выглядит так:

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]

  • 0
    Можете ли вы привести пример того, что вы хотели бы получить?
Теги:

5 ответов

0
Лучший ответ

это то, чего ты хочешь?

String[] result = s.replaceAll("\\w{2,}", "").replaceAll("[:;,]"," ").replaceAll("\\u0020+"," ").split(" ");

result массива теперь содержит только отдельные символы. Тестирование с помощью:

for(String c: array)
        System.out.println(c);

выведет:

a
b
c
d
e
  • 0
    Спасибо, это то, что я ищу.
1

если 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);
  }
}
  • 0
    Это было очень полезно. Спасибо
  • 0
    @ rtg27 Нет проблем!
1

Вам нужно сломать проблему:

  • Разделить строку на ; ,
  • Для каждого слова, которое вы получили:
    • Разделите строку на :
    • Вставьте первую часть (список имен переменных) в свой массив.
    • Отбросьте вторую часть (введите информацию).

Обратите внимание, что это даст вам массив {"a ,b, c", "d,e"} как я понимаю из вашего вопроса, что вы этого хотите. Если вы хотите разделить, что дальше, вам нужно разделить каждый из этих строк, на этот раз в ,. Обратите внимание, что в этом случае вам нужно будет изменить тип вашего массива из String[] в String[][]. Вы получите {{"a", "b", "c"}, {"d", "e"}}.

Если вы также хотите удалить пробелы во время процесса разделения, добавьте \s* до и после разделительного символа. Например: "a, b,c, d".split("\\s*,\\s*") возвращает {"a", "b", "c", "d"}.

0

как насчет следующего?

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]
0

Я думаю, что у вас есть проблема. temporary.split(","); это массив, который вы приложили к тому, чтобы быть частью другого массива. Thats troublesome.... Я имею в виду:

Array
     0 => Array
               0 => a  
               1 => b

Поэтому вы должны использовать:

String arr = temporary.split(",");
  • 3
    Это не отвечает на вопрос.
  • 0
    @DavidConrad как насчет этого?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню