Sequência de divisão do Android


227

Eu tenho uma string chamada CurrentStringe está na forma de algo assim "Fruit: they taste good".
Gostaria de dividir o CurrentStringuso de :como delimitador.
Dessa forma, a palavra "Fruit"será dividida em sua própria string e "they taste good"será outra string.
E então eu simplesmente gostaria de usar SetText()2 diferentes TextViewspara exibir essa string.

Qual seria a melhor maneira de abordar isso?


Você provavelmente poderia tentar ler expressões regulares. Eles funcionam bem também.
Shouvik 17/09/10

10
@Falmarri - Qualquer pergunta única sobre programação é bem-vinda no Stack Overflow.
Tim Post

Respostas:


606
String currentString = "Fruit: they taste good";
String[] separated = currentString.split(":");
separated[0]; // this will contain "Fruit"
separated[1]; // this will contain " they taste good"

Convém remover o espaço para a segunda String:

separated[1] = separated[1].trim();

Se você deseja dividir a string com um caractere especial como ponto (.), Use o caractere de escape \ antes do ponto

Exemplo:

String currentString = "Fruit: they taste good.very nice actually";
String[] separated = currentString.split("\\.");
separated[0]; // this will contain "Fruit: they taste good"
separated[1]; // this will contain "very nice actually"

Existem outras maneiras de fazer isso. Por exemplo, você pode usar a StringTokenizerclasse (de java.util):

StringTokenizer tokens = new StringTokenizer(currentString, ":");
String first = tokens.nextToken();// this will contain "Fruit"
String second = tokens.nextToken();// this will contain " they taste good"
// in the case above I assumed the string has always that syntax (foo: bar)
// but you may want to check if there are tokens or not using the hasMoreTokens method

Obrigado por isso! Também é útil para separar hora e minuto ao criar um novo objeto Hora.
trabalhou

24
Obrigado! O método .split () não funciona no Android! O StringTokenizer está funcionando bem.
Ayush Pateria

Sim, sim ... que problemas você teve?
Cristian

split no android recebe uma expressão regular em vez de um simples divisor de strings.
Htafoya # 6/13

1
@HardikParmar uso etPhoneNo.getText().toString().replaceAll("\\D", "");seu diz que substituir todos que não é o dígito
MilapTank


52

android split string por vírgula

String data = "1,Diego Maradona,Footballer,Argentina";
String[] items = data.split(",");
for (String item : items)
{
    System.out.println("item = " + item);
}

25
     String s = "having Community Portal|Help Desk|Local Embassy|Reference Desk|Site News";
     StringTokenizer st = new StringTokenizer(s, "|");
        String community = st.nextToken();
        String helpDesk = st.nextToken(); 
        String localEmbassy = st.nextToken();
        String referenceDesk = st.nextToken();
        String siteNews = st.nextToken();

22

Você também pode considerar o método TextUtils.split () específico do Android .

A diferença entre TextUtils.split () e String.split () está documentada com TextUtils.split ():

String.split () retorna [''] quando a string a ser dividida estiver vazia. Isso retorna []. Isso não remove nenhuma sequência vazia do resultado.

Acho esse comportamento mais natural. Em essência, TextUtils.split () é apenas um invólucro fino para String.split (), lidando especificamente com o caso de cadeia vazia. O código para o método é realmente bastante simples.


Qual é o benefício de usar TextUtils.split () em vez de apenas chamar split () diretamente na string?
Nibarius 18/10/2014

Resposta editada para esclarecer diferença entre TextUtils.split () e String.split ()
gardarh

Obrigado, eu realmente li a documentação para TextUtils.split (), mas por algum motivo eu perdi esse detalhe. Acho que estava cansado demais para entender o que realmente dizia.
Nibarius 20/10

0

String s = "String ="

String [] str = s.split ("="); // agora str [0] é "olá" e str [1] é "bom dia, 2,1"

adicione esta string

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.