2016-04-11 4 views
-1

Мне нужно разбить строку, используя символ трубы '|'Как разбить строковое значение, используя символ pipe в качестве разделителя?

В этом случае я могу разделить строковое значение, но если у есть «номер пули» больше (0-9), он печатает только первую цифру числа.

Пример: Если вход 11. Welcome to java programming Это напечатает 1 Welcome to java programming

Это мой код до сих пор

public static void main(String[] args) { 

    String split_vls = "11. Welcome1. to java programming |1. Oops concepts |12. Encapsulation |3.Abstraction |14.Inheritance |5.Polymorphism"; 
    String[] Numeric_split = split_vls.split("\\|*(\\d+\\.)\\s*"); 
    for (String pipes_Split : Numeric_split) { 
     System.out.println(pipes_Split); 
    } 
} 

Это выход, который я получаю:

для программирования Java Описания концепций Инкапсуляция Абстракция
Наследование
Полиморфные

Это ожидаемый результат:

Добро пожаловать в программирования Java
Oops понятий
Инкапсуляция
Абстракция
Наследование
Полиморфные

ответ

3

Проблема заключается в том, что ваше выражение принимает ровно один «символ слова» между | и .. Вы должны позволить «один или более»:

String[] Numeric_split = split_vls.split("\\|*(\\w+\\.)\\s*"); 
//            ^

Demo.

+0

Сэр, если у меня есть «» в предложении вроде: 11. Добро пожаловать. для программирования на Java. Он получает разделение предложения. В этом сценарии не достигается выход Excepted. 'Добро пожаловать для программирования Java Упс концепции Инкапсуляция Абстракция Наследование Полиморфизм ' –

+0

@Chola Вы можете заменить '\\ w' с' \\ d', чтобы избежать сопоставления букв ([демо] (HTTP: // ideone .com/GbHvfJ)). – dasblinkenlight

+0

Сэр, я сделал некоторые изменения из вашего ответа в своем вопросе: «Если я добавлю новый номер и«. ». Он полностью удаляет предыдущее слово «Добро пожаловать» полностью. Пожалуйста, проверьте мой вопрос. И Дайте мне решение. –

0

Вы получите значения, которые у вас есть в вашей строке.

Ваш Строка:

String split_vls = "11. Welcome to java programming |1. Oops concepts |12. Encapsulation |3.Abstraction |14.Inheritance |5.Polymorphism"; 

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

StringTokenizer st= new StringTokenizer(split_vls, "|"); 
while (st.hasMoreElements()) { 
    System.out.println(st.nextToken()); 
} 

Выход:

11. Добро пожаловать на Java программирование
1. Oops понятия
12. Инкапсуляция
3.Абстракция
14. Наследование
5.Полиморфизм

или:

String[] Numeric_split = split_vls.split("\\|*(\\w+\\.)\\s*"); 
for (String pipes_Split : Numeric_split) { 
    System.out.println(pipes_Split); 
} 

Выход:

Добро пожаловать в программирования Java
Oops понятий
инкапсуляции
Абстракция
Наследование
полиморфизм

+0

но мой ожидаемый результат: Без какой-либо номер или пули впереди. Добро пожаловать на Java программирование Упс концепции Инкапсуляция Абстракция Наследование Полиморфные –

+0

обновил ответ –

Смежные вопросы