Android Split string


227

У меня есть строка называется CurrentStringи в форме что-то вроде этого "Fruit: they taste good".
Я хотел бы разделить, CurrentStringиспользуя в :качестве разделителя.
Таким образом, слово "Fruit"будет разбито на собственную строку и "they taste good"будет другой строкой.
И тогда я просто хотел бы использовать SetText()2 разных TextViewsдля отображения этой строки.

Как лучше всего подойти к этому?


Возможно, вы могли бы попробовать читать в регулярных выражениях. Они тоже отлично работают.
Шоувик

10
@Falmarri - Любой уникальный вопрос о программировании приветствуется в Stack Overflow.
Тим Пост

Ответы:


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"

Вы можете удалить пробел во второй строке:

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

Если вы хотите разбить строку специальным символом, таким как точка (.), Вы должны использовать escape-символ \ перед точкой

Пример:

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"

Есть и другие способы сделать это. Например, вы можете использовать StringTokenizerкласс (from 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

Спасибо за это! Также полезно для разделения часов и минут при создании нового объекта Time.
работал

24
Спасибо! Метод .split () вообще не работает в Android! StringTokenizer работает нормально.
Аюш Патерия

Да, это ... какие проблемы у вас были?
Кристиан

split в android получает регулярное выражение вместо простого разделителя строк.
htafoya

1
@HardikParmar использовать etPhoneNo.getText().toString().replaceAll("\\D", "");его говорит, что заменить все, что не является цифрой
MilapTank

86

Метод .split будет работать, но он использует регулярные выражения. В этом примере это будет (украсть у Кристиана):

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

Кроме того, это произошло из-за того, что Android-сплит работает неправильно


52

Android разделить строку запятой

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

Возможно, вы захотите рассмотреть специальный метод Android TextUtils.split () для Android .

Разница между TextUtils.split () и String.split () документируется с помощью TextUtils.split ():

String.split () возвращает [''], когда разделяемая строка пуста. Это возвращает []. Это не удаляет пустые строки из результата.

Я считаю это более естественным поведением. По сути, TextUtils.split () - это просто тонкая оболочка для String.split (), предназначенная специально для случая с пустой строкой. Код для метода на самом деле довольно прост.


В чем преимущество использования TextUtils.split () вместо простого вызова split () непосредственно в строке?
Нибариус

Отредактированный ответ, чтобы уточнить разницу между TextUtils.split () и String.split ()
gardarh

Спасибо, на самом деле я прочитал документацию по TextUtils.split (), но по какой-то причине я упустил эту деталь. Думаю, я устал уставать от того, что на самом деле сказал.
Нибариус

0

String s = "String ="

String [] str = s.split ("="); // теперь str [0] - "привет", а str [1] - "доброе утро, 2,1"

добавить эту строку

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.