Разделяем строку в Android: сплит по символу и вывод в TextView
Быстрый ответ
Для разделения строк в Android исползуем метод split()
. Если разделитель – запятая, можно сделать следующим образом:
String[] parts = "Jerry,George,Elaine".split(",");
// parts = {"Jerry", "George", "Elaine"}
Также возможно разделить по пробельным символам:
String[] parts = "vampires are much like everyone else".split("\\s+");
// parts = {"vampires", "are", "much", "like", "everyone", "else"}
Для экранирования специальных символов в регулярных выражениях используется двойное обратное наклонение:
String[] parts = "What's the point. No, seriously, what's the point.".split("\\.");
// parts = {"What's the point", " No, seriously, what's the point"}
Обработка особенностей и крайних сценариев
В случае необходимости получения фиксированного числа подстрок:
String[] parts = "You,me,Dupree,FourthWheel".split(",", 3);
// parts = {"You", "me", "Dupree,FourthWheel"}
Для корректного учёта пустых подстрок следует применить TextUtils.split()
:
String[] parts = TextUtils.split("Everyone:::Jumps::In the pool", ":");
// parts = {"Everyone", "Jumps", "In the pool"}
Удаление пробелов после разделения
Хочется удалить пробелы в начале и в конце подстрок, оставшихся после разделения:
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
:
StringTokenizer tokenizer = new StringTokenizer("Coffee,Tea,Me", ",");
while (tokenizer.hasMoreTokens()) {
String token = tokenizer.nextToken().trim();
// Ниже происходит обработка полученного токена
}
Страждущий ум сообщает, что StringTokenizer
не возвращает пустые строки, что может быть полезно.
Безопасное разделение и обход токенов
Не забудьте проверить размер полученного массива, чтобы избежать ошибок:
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
:
StringTokenizer tokenizer = new StringTokenizer(testString, ",");
while (tokenizer.hasMoreTokens()) {
try {
String token = tokenizer.nextToken();
// Выполняем работу с токеном
} catch (NoSuchElementException e) {
// Обрабатываем ситуацию с концом токенов
}
}
Отображение разделённых токенов в элементах Android
Разделив подстроки, вы можете прекрасно представить их в элементах TextViews
:
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 необходим надёжный метод анализа, особенно при наличии специальных символов:
String complexString = "It<splitsville>for<us>";
String[] parts = complexString.split("<splitsville>");
// parts = {"It", "for<us>"}
Не забывайте экранировать специальные символы в регулярных выражениях.
Визуализация
Оформить разделение строки можно в виде нарезки фруктового шашлыка:
Фруктовый шашлык = "Apple#Banana#Cherry#Date"
// Резаем помежду фруктами
String[] fruits = kebab.split("#");
Фруктовый шашлык превращается в аккуратные кусочки:
До: [🍎#🍌#🍒#🌴]
После: [🍎, 🍌, 🍒, 🌴]
Каждая часть – теперь, как отдельный кусочек вкуснейшего десерта.
Разделяйте с умом – проверяйте входные данные и обрабатывайте возможные ошибки
Чистота входных данных и правильная обработка ошибок имеют важное значение.
String userInput = "Cat – Dog – Squirrel ";
String[] pets = userInput.split(" – ");
// Pets = {"Cat", "Dog", "Squirrel"}
Всегда продумывайте динамические сценарии и их влияние на логику разделения.
Лучшие практики для анализа и разделения
- Всегда инкапсулируйте логику обработки в отдельные функции.
- Бережно используйте регулярные выражения.
- Проверяйте входные данные и их формат.
- Подготавливайте свой метод к различным вариациям входных данных.
Такой подход сделает вашу логику разделения устойчивой к изменениям.
Полезные материалы
- String | Android Developers — это официальное руководство, посвящённое работе со строками.
- Regular expressions in Java – Tutorial — великолепный учебник по регулярным выражениям.
- How do I split a string in Java? – Stack Overflow — здесь можно найти примеры использования метода
split()
. - Tutorial | DigitalOcean — ещё несколько примеров использования метода
split()
в Android.