Eu preciso dividir uma string usando o símbolo de pipe "|"
Neste cenário, posso dividir o valor da string, mas se eu tem um "número de marcador" maior que (0-9), imprime apenas o primeiro dígito do número.
Exemplo: se a entrada for 11. Welcome to java programming
Vai imprimir 1 Welcome to java programming
Este é o meu código até agora
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);
}
}
Esta é a saída que recebo:
para programação java Ops conceitos Encapsulamento Abstração
Herança
Polimórfico
Esta é a saída esperada:
Bem-vindo à programação java
Ops conceitos
Encapsulamento
Abstração
Herança
Polimórfico
Respostas:
3 para resposta № 1O problema é que sua expressão leva exatamente um "caractere de palavra" entre |
e .
. Você precisa permitir "um ou mais":
String[] Numeric_split = split_vls.split("\|*(\w+\.)\s*");
// ^
0 para resposta № 2
Você receberá os valores que você tem na sua string.
Sua corda:
String split_vls = "11. Welcome to java programming |1. Oops concepts |12. Encapsulation |3.Abstraction |14.Inheritance |5.Polymorphism";
Tente isto:
StringTokenizer st= new StringTokenizer(split_vls, "|");
while (st.hasMoreElements()) {
System.out.println(st.nextToken());
}
Saída:
11. Bem-vindo à programação java
1. Oops conceitos
12. Encapsulamento
3.Abstração
14. herança
5.Polimorfismo
ou:
String[] Numeric_split = split_vls.split("\|*(\w+\.)\s*");
for (String pipes_Split : Numeric_split) {
System.out.println(pipes_Split);
}
Saída:
Bem-vindo à programação java
Ops conceitos
Encapsulamento
Abstração
Herança
Polimorfismo