ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Разделяем строку в Android: сплит по символу и вывод в TextView

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для разделения строк в Android исползуем метод split(). Если разделитель – запятая, можно сделать следующим образом:

Java
Скопировать код
String[] parts = "Jerry,George,Elaine".split(",");
// parts = {"Jerry", "George", "Elaine"}

Также возможно разделить по пробельным символам:

Java
Скопировать код
String[] parts = "vampires are much like everyone else".split("\\s+");
// parts = {"vampires", "are", "much", "like", "everyone", "else"}

Для экранирования специальных символов в регулярных выражениях используется двойное обратное наклонение:

Java
Скопировать код
String[] parts = "What's the point. No, seriously, what's the point.".split("\\.");
// parts = {"What's the point", " No, seriously, what's the point"}
Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Обработка особенностей и крайних сценариев

В случае необходимости получения фиксированного числа подстрок:

Java
Скопировать код
String[] parts = "You,me,Dupree,FourthWheel".split(",", 3);
// parts = {"You", "me", "Dupree,FourthWheel"}

Для корректного учёта пустых подстрок следует применить TextUtils.split():

Java
Скопировать код
String[] parts = TextUtils.split("Everyone:::Jumps::In the pool", ":");
// parts = {"Everyone", "Jumps", "In the pool"}

Удаление пробелов после разделения

Хочется удалить пробелы в начале и в конце подстрок, оставшихся после разделения:

Java
Скопировать код
String[] parts = " space , space , and more space ".split(",");
for (int i = 0; i < parts.length; i++) {
    parts[i] = parts[i].trim();
}
// parts = {"space", "space", "and more space"}

StringTokenizer как альтернатива

В качестве альтернативы split() можно использовать StringTokenizer:

Java
Скопировать код
StringTokenizer tokenizer = new StringTokenizer("Coffee,Tea,Me", ",");
while (tokenizer.hasMoreTokens()) {
    String token = tokenizer.nextToken().trim();
    // Ниже происходит обработка полученного токена
}

Страждущий ум сообщает, что StringTokenizer не возвращает пустые строки, что может быть полезно.

Безопасное разделение и обход токенов

Не забудьте проверить размер полученного массива, чтобы избежать ошибок:

Java
Скопировать код
String testString = "Luke,Vader,Leia";
String[] parts = testString.split(",");
if (parts.length > 2) {
    String Luke = parts[0];
    String Vader = parts[1];  
    String Leia = parts[2];
    // Итак, можно приступить к организации вечеринки
}

Бережно обходитесь со StringTokenizer и ловите NoSuchElementException:

Java
Скопировать код
StringTokenizer tokenizer = new StringTokenizer(testString, ",");
while (tokenizer.hasMoreTokens()) {
    try {
        String token = tokenizer.nextToken();
        // Выполняем работу с токеном
    } catch (NoSuchElementException e) {
        // Обрабатываем ситуацию с концом токенов
    }
}

Отображение разделённых токенов в элементах Android

Разделив подстроки, вы можете прекрасно представить их в элементах TextViews:

Java
Скопировать код
TextView tvOne = findViewById(R.id.tv_one);
TextView tvTwo = findViewById(R.id.tv_two);
TextView tvThree = findViewById(R.id.tv_three);

String[] parts = "Love:Peace:Joy".split(":");
tvOne.setText(parts.length > 0 ? parts[0] : "");
tvTwo.setText(parts.length > 1 ? parts[1] : "");
tvThree.setText(parts.length > 2 ? parts[2] : "");

Сценарии из жизни

При работе с CSV-файлами или ответами API необходим надёжный метод анализа, особенно при наличии специальных символов:

Java
Скопировать код
String complexString = "It<splitsville>for<us>";
String[] parts = complexString.split("<splitsville>");
// parts = {"It", "for<us>"}

Не забывайте экранировать специальные символы в регулярных выражениях.

Визуализация

Оформить разделение строки можно в виде нарезки фруктового шашлыка:

Markdown
Скопировать код
Фруктовый шашлык = "Apple#Banana#Cherry#Date"

// Резаем помежду фруктами
String[] fruits = kebab.split("#");

Фруктовый шашлык превращается в аккуратные кусочки:

Markdown
Скопировать код
До: [🍎#🍌#🍒#🌴]
После: [🍎, 🍌, 🍒, 🌴]

Каждая часть – теперь, как отдельный кусочек вкуснейшего десерта.

Разделяйте с умом – проверяйте входные данные и обрабатывайте возможные ошибки

Чистота входных данных и правильная обработка ошибок имеют важное значение.

Java
Скопировать код
String userInput = "Cat – Dog – Squirrel  "; 
String[] pets = userInput.split(" – ");
// Pets = {"Cat", "Dog", "Squirrel"}

Всегда продумывайте динамические сценарии и их влияние на логику разделения.

Лучшие практики для анализа и разделения

  1. Всегда инкапсулируйте логику обработки в отдельные функции.
  2. Бережно используйте регулярные выражения.
  3. Проверяйте входные данные и их формат.
  4. Подготавливайте свой метод к различным вариациям входных данных.

Такой подход сделает вашу логику разделения устойчивой к изменениям.

Полезные материалы

  1. String | Android Developers — это официальное руководство, посвящённое работе со строками.
  2. Regular expressions in Java – Tutorial — великолепный учебник по регулярным выражениям.
  3. How do I split a string in Java? – Stack Overflow — здесь можно найти примеры использования метода split().
  4. Tutorial | DigitalOcean — ещё несколько примеров использования метода split() в Android.