Podwójne spacje

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);
}
0
"string . spacje . ".replace("  ", "")
0

Użyj

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

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

0
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;
}
0

W zasadzie to prawie zrobiłeś:

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")));
    }
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

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

        return new StringBuilder(resultWithoutDoubleSpaces);
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1