Разделение строки с использованием регулярного выражения следующей строки, за которым следует di git (JAVA) - PullRequest
0 голосов
/ 29 мая 2020

У меня есть следующая строка, которую мне нужно разделить на пробел, запятые и следующий символ строки. Пример строки: "./homework2 3,phone3,desc3,brand4\n4,phone4,desc4,brand4\n5,phone5,desc5,brand5"

Я использую функцию разделения как: .split("[,\\s+\\n+]");, но не могу получить требуемый вывод. Программа продолжает читать brand4\n4 как одну подстроку.

Помощь будет признательна.

Ответы [ 4 ]

1 голос
/ 29 мая 2020

Вместо использования \ s + и \ n + вы можете использовать общий квантор. Ниже изображено то же

String s = "./homework2 3,phone3,desc3,brand4\n4,phone4,desc4,brand4\n5,phone5,desc5,brand5";
String[]s1 = s.split("[,\\s\\n]+");
for(String s2:s1) {
    System.out.println(s2);
}

, которое приводит к

./homework2
3
phone3
desc3
brand4
4
phone4
desc4
brand4
5
phone5
desc5
brand5
0 голосов
/ 29 мая 2020

Попробуйте этот код:

           String str = "./homework2 3,phone3,desc3,brand4\\n4,phone4,desc4,brand4\\n5,phone5,desc5,brand5";
           String[] arrOfStr = str.split("[\\s\\n,]+");

           for (String a : arrOfStr) 
                System.out.println(a); 

}
}

Вывод:

./homework2
3
phone3
desc3
brand4\n4
phone4
desc4
brand4\n5
phone5
desc5
brand5

EDIT:

Я нашел эту функцию на сайте: Ссылка здесь

           for (int i = 0 ; i < arrOfStr.length ; i++) { //YOUR LOOP !!!
               splitString(arrOfStr[i]); 
           }       
}

static void splitString(String str) 
{ 
    StringBuffer alpha = new StringBuffer(),  
    num = new StringBuffer(), special = new StringBuffer(); 

    for (int i=0; i<str.length(); i++) 
    { 
        if (Character.isDigit(str.charAt(i))) 
            num.append(str.charAt(i)); 
        else if(Character.isAlphabetic(str.charAt(i))) 
            alpha.append(str.charAt(i)); 
        else
            special.append(str.charAt(i)); 
    } 
    System.out.println(alpha); 
    System.out.println(num);    
} 
}

Объедините две функции, и вы получите:

homework
2

3
phone
3
desc
3
brandn
44
phone
4
desc
4
brandn
45
phone
5
desc
5
brand
5

Вы можете сохранить значения в другом массиве или в другом массиве по вашему выбору.

0 голосов
/ 29 мая 2020

Проверьте ссылку ниже, чтобы проверить регулярное выражение

https://regex101.com/r/2ZkRBp/1/

0 голосов
/ 29 мая 2020

Попробуйте, это должно работать так, как вы хотите:

.split(" |,|\\n");

Это разбивает строку на пробел (""), запятую или следующий символ строки. При необходимости используйте оператор или для добавления дополнительных записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...