Warum nicht einfach:
int plusIndex = s.indexOf("+");
if (plusIndex != -1) {
String before = s.substring(0, plusIndex);
// Use before
}
Es ist nicht wirklich klar, warum deine ursprüngliche Version nicht funktioniert hat, aber dann hast du nicht gesagt, was wirklich passiert ist. Wenn Sie nicht mit regulären Ausdrücken teilen möchten, würde ich persönlich Guava verwenden:
Iterable<String> bits = Splitter.on('+').split(s);
String firstPart = Iterables.getFirst(bits, "");
Wenn Sie vorhaben, split
zu verwenden (entweder die integrierte Version oder Guava) Sie brauchen sich nicht zu prüfen Sie, ob es +
zuerst enthält - wenn es nicht gibt, wird es sowieso nur ein Ergebnis geben. Offensichtlich gibt es eine Frage der Effizienz, aber es ist einfacher Code:
// Calling split unconditionally
String[] parts = s.split("\\+");
s = parts[0];
Beachten Sie, dass das Schreiben String[] parts
über String parts[]
bevorzugt wird - es ist viel mehr idiomatische Java-Code.
Bitte lesen Sie http://tinyurl.com/so-hints - es sinnlos ist zu sagen, dass es nicht das erwartete Ergebnis nicht geben ohne zu sagen, was Sie erwartet und was Sie tatsächlich bekam. –