#java #arrays #string #escaping
#java #массивы #строка #экранирование
Вопрос:
У меня есть фрагмент кода, который разбивает строку на массив строк.Поскольку кавычки содержатся в строке, ее невозможно разделить с помощью запятой.
Регулярное выражение является частью моего кода, поэтому я не могу удалить все регулярное выражение, что я могу сделать, так это расширить его
String lines = "70001223,fjdhsd,jahd",37874,dfhjkd,jadhj";
String columns [] = lines.split(",(?=(?:[^"]*"[^"]*")*[^"]*$)", -1);
for(int i = 0; i < columns.length; i ){
System.out.println(columns[i]);
}
70001223,fjdhsd,**jahd"**
37874
dfhjkd
jadhj
это фактический результат, но я хочу, чтобы фактический результат был
70001223,
fjdhsd,
**jahd"**
37874
dfhjkd
jadhj
посмотрите, какая разница, что кавычки («) вызывают проблему.
Комментарии:
1. Почему бы просто не использовать:
String columns[] = lines.split(",");
?2. @NicholasK по его словам, в его строках есть «» кавычки, и, следовательно, он не может использовать split напрямую, как указано вами.
3. Какое отношение разделение запятой имеет к кавычкам в строке? И почему первые два токена содержат запятую, а остальные нет?
4. примерные данные не самые лучшие, но я также не вижу, какое значение имеют двойные кавычки; ни то, как вы ожидаете получить это
**jahd"**
, чего я не могу найти во входных данных. И как вы можете изменить регулярное выражение, но не уменьшить его???5.почему кавычки не допускают разделения? это просто то выражение, которое не работает с нечетным числом кавычек или? с
var text="abc,"', -";
text.split(",")
возвратамиString[3] { "abc", ""'", " -" }
— или используя ваш пример:String[6] { "70001223", "fjdhsd", "jahd"", "37874", "dfhjkd", "jadhj" }
— может быть, вы могли бы отредактировать вопрос, чтобы лучше объяснить
Ответ №1:
Не совсем понял вывод, например, в некоторых строках была запятая, а *** отображался в исходной строке.
Может быть, что-то вроде этого?
регулярное выражение открытого класса {
public static void main(String[] args) {
String lines = "70001223,fjdhsd,***jahd***",37874,dfhjkd,jadhj";
String newLine = lines.replace(""", "");
String[] columns = newLine.split(",");
for (String column : columns) System.out.println(column);
}
}