Android Split струна


227

У мене є рядок під назвою CurrentStringі має форму щось подібне "Fruit: they taste good".
Я хотів би розділити CurrentStringвикористання в :якості роздільника.
Таким чином, слово "Fruit"розділиться на власний рядок і "they taste good"буде іншим рядком.
І тоді я просто хотів би використовувати SetText()два різних 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();

Якщо ви хочете розділити рядок зі спеціальним символом, як dot (.), Слід скористатися символом 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клас (від 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

Дякую за це! Також корисно для розділення години та хвилини при створенні нового об’єкта Час.
працював

24
Спасибі! .split () метод зовсім не працює в Android! StringTokenizeris працює добре.
Айуш Патерія

Так, це так ... які проблеми у вас були?
Крістіан

спліт в android отримує регулярний вираз замість простого струнного дільника.
хтафоя

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

андроїд розділений рядок комою

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 () .

Різниця між TextUtils.split () і String.split () задокументована з TextUtils.split ():

String.split () повертає [''], коли рядок, яку потрібно розділити, порожня. Це повертає []. Це не видаляє порожніх рядків з результату.

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


Яка користь від використання TextUtils.split (), а не просто виклику split () прямо на рядку?
nibarius

Відредагована відповідь, щоб уточнити різницю між TextUtils.split () та String.split ()
gardarh

Дякую, я насправді прочитав документацію для TextUtils.split (), але чомусь пропустив цю деталь. Я здогадуюсь, я втомився зрозуміти, що це насправді говорить.
nibarius

0

String s = "Рядок ="

String [] str = s.split ("="); // тепер str [0] - "привіт", а str [1] - "goodmorning, 2,1"

додати цей рядок

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.