Удалить и получить текст из строки, разделенной запятыми, если она имеет префикс # в java? - PullRequest
0 голосов
/ 03 августа 2020

У меня есть строка в java как

Вход

String str = "1,2,3,11,#5,#7,9";

Требуемый выход

String result = "1,2,3,11,9";
// And 5,7 with special character # in separate Array-list
//List<String> list = ["5","7"];

Примечание : этот специальный символ # является динамическим c, он может присутствовать или не присутствовать в строке.

Я знаю, как удалить # с помощью str. replaceAll ("#", "");, но как получить 5 и 7 в отдельный список.

Ответы [ 4 ]

1 голос
/ 03 августа 2020
    String str = "1,2,3,11,#5,#7,9";
    List<String> parts = Arrays.asList(str.split(","));
    List<Integer> normalNumbers = parts.stream().filter(i -> !i.startsWith("#")).map(Integer::parseInt).collect(
            Collectors.toList());
    List<Integer> specialNumbers = parts.stream().filter(i -> i.startsWith("#")).map(i -> Integer.valueOf(i.substring(1))).collect(Collectors.toList());
    System.out.println(normalNumbers);
    System.out.println(specialNumbers);
0 голосов
/ 03 августа 2020

1. Вы можете попробовать String.split (),

String[] tokens = str.split(","); 

2. Создайте 2 новых списка массивов строк,

ArrayList<String> num = new ArrayList<String>();
ArrayList<String> result = new ArrayList<String>();

3. Затем l oop через токены, проверяя каждый токен, затем pu sh,

for(int i = 0; i < tokens.length; i++)
{
    if(tokens[i].charAt(0) == '#')
        num.add(String.valueOf(tokens[i].charAt(1)));
    else
        result.add(tokens[i]);
}
0 голосов
/ 03 августа 2020
String str = "1,2,3,11,#5,#7,9";
List<String> s = Arrays.asList(str.split(",")).stream().filter(a->a.startsWith("#")).map(a->a.replace("#", "")).collect(Collectors.toList());
System.out.println(s);  //Output [5, 7]
str = Arrays.asList(str.split(",")).stream().filter(a->!a.startsWith("#")).collect(Collectors.joining(","));
System.out.println(str); //Output 1,2,3,11,9
0 голосов
/ 03 августа 2020

String в Java имеет метод под названием split(). Вы можете легко использовать это, чтобы получить все целые числа с & без prefix #

        String str = "1,2,3,11,#5,#7,9";
        
        List<Integer> res = Arrays.asList(str.split(",")).stream().map(ch->{
            if(!ch.startsWith("#")){
                return Integer.parseInt(ch);
            }else {
                return null;
            }
        }).filter(Objects::nonNull).collect(Collectors.toList());

        System.out.println(res);

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