Podwójne spacje

UR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

Chciałem napisać metodę, która będzie pozbywała się z ciągu znaków podwójnych spacji. Nie do końca mi to wyszło i metoda zwraca mi dwa złączone ciągi znaków: jeden z podwójną spacją, a drugi bez. Może ktoś ma pomysł jak pozbyć się tego błędu?

public static StringBuilder removeUnwantedSpaces(StringBuilder text) {
for(String space: text.toString().split(" ")) {

        if (!space.equals("")) {
            text.append(space + " ");
        }
    }

    return new StringBuilder(text);
}
SZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 217
0
Kopiuj
"string . spacje . ".replace("  ", "")
K5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1005
0

Użyj

replaceAll("\\s+", " ").

\s oznacza wyrażenie regularne, które "łapie" między innymi spację. + oznacza, że jeden lub więcej dopasowań

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
template<typename InputIter, typename OutIter, typename T>
OutIter copyRemovingDuplicatesOf(InputIter b, InputIter e, OutIter out, T val)
{
    while (b != e) {
        while (b != e && *b != val) {
             *out++ = *b++;
        }
        if (b != e) *out++ = *b++;
        while (b != e && *b == val) {
             b++;
        }
    }
    return out;
}
jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4712
0

W zasadzie to prawie zrobiłeś:

Kopiuj
public static StringBuilder removeUnwantedSpaces(StringBuilder text) {
        StringBuilder result = new StringBuilder();
        for(String space: text.toString().split(" ")) {

            if (!space.equals("")) {
                result.append(space + " ");
            }
        }

        return new StringBuilder(result);
    }

    public static void main(String[] args) {
        System.out.println(removeUnwantedSpaces( new StringBuilder("Panie    " +
                "kapitanie    , a co   by Pan zrobił jakby się okazało, że pańska    siorka   opierdala kiełbachy kosmitom")));
    }
KE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 57
0

W mojej opinii najlepiej byłoby połączyć to co zostało zaproponowane przez @kixe52 z @jarekr000000 i uzyskać zarówno przejrzystość jak i poprawność :) I zamienić implementację tego drugiego na

Kopiuj
    public static StringBuilder removeUnwantedSpaces(StringBuilder text) {
        var resultWithoutDoubleSpaces = text.toString().replaceAll("\\s{2,}", " ");

        return new StringBuilder(resultWithoutDoubleSpaces);
    }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.