У меня есть ниже ответ от некоторого сервера TelnetРазбивает строку только с первого экземпляра Java
String response = "I:[email protected]||K:CMS||O:REgetPerspectiveList||A0:googleP||A1:yahooP||A2:gmail||A3:test||A4:hello||A16:CCTV Barco||A17:CCTV: Corridor CC||A18:CCTV: DR Andy Warhol||A19:CCTV: DR Gaudi (Analog)||A20:CCTV: DR Miro||A21:CCTV: Entrance CC||A22:CCTV: Gaudi Demo Room Megapixel||";
Я хочу, чтобы получить значение атрибутов, например, А0, А1 и т.д., и поэтому я пишу ниже логики
String[] strings = response.split("[||]");
List<String> list = new ArrayList<>();
for (String string : strings) {
if (string.contains(":")) {
String[] attributes = string.split(":");
if (attributes[0].startsWith("A")) {
list.add(attributes[1]);
}
}
}
Но моя проблема в том, что split.split (":") split дает мне строковый массив, но мне требуется только два массива строк размера длины. Напр. ответ A17 дает мне «CCTV» в качестве атрибутов [1] и «Коридор CC» в качестве атрибутов [2], но я требую только «CCTV: Коридор CC» как атрибут [1].
Какое регулярное выражение я должен писать в string.split (regexp), так что строка может быть разбита на основе первого экземпляра оператора двоеточия только с точно двумя строками строк размера длины.
Вы можете использовать методы подстроки с indexOf, чтобы получить индекс первого ':' и использовать подстроку до этого индекса и поместить две строки в массив. – Tushar
Я могу это сделать, но я хочу регулярное выражение. –
Pranav, он дает мне такой же ответ, что и раньше, означает CCTV только для атрибута a17 –