Dicas úteis

Dividir a sequência Java pela nova linha

Pin
Send
Share
Send
Send


Eu tenho "004-034556", string1 = 004 string2 = 034556 que desejo dividir em duas linhas:

Isso significa que a primeira linha conterá caracteres antes de '-' e a segunda linha conterá caracteres após String # split () da string String = "004-034556", String [] parts = string.split ("-"), String part1 = parts, // 004 String part2 = parts, // 034556 Também quero verificar se há uma string nela ^ Caso contrário, lançarei uma exceção. Como posso fazer isso $

Respostas: 30

Basta usar o método apropriado *.

Observe que isso exige uma expressão regular; portanto, salve caracteres especiais, se necessário.

Portanto, se você deseja dividir, por exemplo, ponto / ponto. que significa "qualquer caractere" em uma expressão regular, use uma barra invertida, dividida ("[.]") para evitar o único caractere especial Pattern # quote () ou mais ou use a classe de caractere dividida (Pattern.quote (". ")) para representar o (s) caractere (s) da letra, como este String [] parts = string.split (Pattern.quote (". ")), // Divide no período. , ou use String # contains () para evitar a string inteira if (string.contains ("-")) <// Dividir. > else <lança nova IllegalArgumentException ("String" + string + "não contém -"),>.

Para verificar antecipadamente se uma sequência contém certos caracteres (caracteres), basta usar? .

Observe que isso não aceita regex. Para fazer isso, use? = Em vez disso.

Se você deseja manter o caractere separador nas partes resultantes, use o verso positivo. Se você deseja que o caractere de divisão esteja no lado esquerdo, use uma aparência positiva adicionando String string = "004-034556", String [] parts = string.split ("(? = -)"), String part1 = parts, / / 004 String part2 = parts, // -034556 agrupa no modelo.

Se você deseja que o caractere de divisão esteja no lado direito, use um visual positivo usando String string = "004-034556-42", String [] parts = string.split ("-", 2), String part1 = parts, / / 004 String part2 = parts, // 034556-42 prefixando o grupo no modelo.

Se você deseja limitar o número de partes resultantes, pode especificar o número desejado como o segundo argumento do método (d +) - (d +).

Uma alternativa ao processamento direto da string seria usar uma expressão regular com grupos de captura. A vantagem disso é que ela torna óbvia a restrição de entrada mais complexa. Por exemplo, o seguinte divide uma sequência em duas partes e garante que ambas consistam apenas em números:

Como o modelo é corrigido nessa instância, ele pode ser compilado com antecedência e salvo como membro estático (inicializado no momento em que a classe foi carregada no exemplo). Expressão regular:

Os colchetes indicam grupos de captura, uma sequência que corresponde a essa parte da expressão regular pode ser obtida pelo método Match.group (), conforme mostrado. Os símbolos d correspondem a um único dígito decimal e o símbolo + significa "corresponde a uma ou mais da expressão anterior". "Isso realmente não importa, então apenas corresponde a este símbolo de entrada". Observe que você precisa dobrar a barra invertida ao escrever isso como uma sequência Java. Alguns outros exemplos:

Isso dividirá sua string em 2 partes. O primeiro elemento da matriz será a parte que contém o material antes - e o segundo elemento da matriz conterá a parte de sua sequência após -.

Se o comprimento da matriz não for igual a 2, a sequência não estava no formato: split ().

17 respostas

Isso deve cobrir você:

existem apenas duas novas linhas (UNIX e Windows) com as quais você precisa se preocupar.

Se você não deseja linhas vazias:

O método split usa expressão regular (expressões regulares). Como o Java 8 regex suporta R, que é (com a documentação para a classe Pattern):

Combinador de quebra de linha
R qualquer sequência de quebra de linha unicode é equivalente a u000D u000A | [ u000A u000B u000C u000D u0085 u2028 u2029]

para que possamos usá-lo para combinar:

  • u000D 0A -> r n par
  • u000A -> linha de alimentação ( n)
  • u000B -> tabela de strings (não confunda com o caractere de tabulação t o que é u0009)
  • u000C -> formulário de feed ( f)
  • u000D -> retorno de carro ( r)
  • u0085 -> próxima linha (NEL)
  • u2028 -> separador de linha
  • u2029 -> separador de itens

Como você pode ver, r n é colocado no início da expressão regular, o que garante que a expressão regular tente primeiro corresponder a isso um pare somente se isso falhar, ele tentará corresponder caractere único separadores de linha.

portanto, se você deseja dividir em uma linha divisória, use split (" R").

Exemplo de quebra de linha

Suponha que tenhamos a variável strMain. Seu significado consiste em várias palavras separadas por vírgula: "Alfa, Beta, Gama, Delta, Sigma".

Imprima cada palavra em uma linha separada e separe-as com vírgulas. Como resultado, obtemos cinco linhas separadas:

Para implementar isso, use o método split (). Como argumento, passamos a dividir. No nosso caso, o separador é uma vírgula. Código de exemplo:

Como dividir uma string com um espaço

Considere uma situação em que é necessário separar a linha com um espaço. Veja o exemplo abaixo. Temos uma variável de string strMain, composta por várias palavras: "Bem-vindo ao Guru99".

Esta publicação é uma tradução do artigo "Como dividir uma string em Java: Aprenda com o Exemplo", preparado pela equipe amigável do projeto de tecnologia da Internet

Pin
Send
Share
Send
Send