Почему не просто:
int plusIndex = s.indexOf("+");
if (plusIndex != -1) {
String before = s.substring(0, plusIndex);
// Use before
}
Не совсем понятно, почему ваша оригинальная версия не сработала, но тогда вы не сказали, что на самом деле произошло. Если вы хотите разделить не с использованием регулярных выражений, я лично использую Guava:
Iterable<String> bits = Splitter.on('+').split(s);
String firstPart = Iterables.getFirst(bits, "");
Если вы собираетесь использовать split
(либо встроенный в версии или гуавы) вам не нужно проверьте, содержит ли он +
в первую очередь - если это не так, в любом случае будет только один результат. Очевидно, что это вопрос эффективности, но это проще код:
// Calling split unconditionally
String[] parts = s.split("\\+");
s = parts[0];
Обратите внимание, что запись String[] parts
предпочтительнее String parts[]
- это гораздо более идиоматических код Java.
Пожалуйста, прочитайте http://tinyurl.com/so-hints - это бесполезно сказать, что это не дает ожидаемого результата, не говоря, что вы ожидали и что вы на самом деле получил. –