Как преобразовать строковый массив литерала в список массивов без кавычек
Простой сценарий, но трудно найти -
моя строка -
String ipAdd = "["2.2.2.2","1.1.1.1","6.6.6.6","4.4.4.4"]"
Я хочу иметь все элементы в списке массивов. Как я могу это сделать?
Я пытаюсь сопоставить шаблон для IP и всех, не работая и используя функцию split, он включает в себя кавычки и скобки.
Использование replaceAll()
(для удаления фигурных скобок) и split()
(для разделения на запятую) должно работать:
public static void main(String... args) throws Exception {
String ipAdd = "[\"2.2.2.2\",\"1.1.1.1\",\"6.6.6.6\",\"4.4.4.4\"]";
List<String> list = Arrays.asList(ipAdd.replaceAll("\\[|\\]", "").split(","));
for (String s : list){
System.out.println(s);
}
}
O/P:
"2.2.2.2"
"1.1.1.1"
"6.6.6.6"
"4.4.4.4"
Следующий код может соответствовать вашему требованию:
public static void main(String[] args) {
String st = "[\"2.2.2.2\",\"1.1.1.1\",\"6.6.6.6\",\"4.4.4.4\"]";
String patternString1 = "(\\d\\.\\d\\.\\d\\.\\d)";
Pattern pattern = Pattern.compile(patternString1);
Matcher matcher = pattern.matcher(st);
ArrayList<String> list = new ArrayList<>();
while(matcher.find()) {
list.add(matcher.group(1));
}
for (String item : list) {
System.out.println("" + item);
}
}
Вы можете использовать регулярное выражение с группами захвата, чтобы извлечь IP из строки. (см. https://docs.oracle.com/javase/tutorial/essential/regex/groups.html)