Ich werde über die Funktionsweise einer etwas komplizierten Zeichenkette schreiben
Zum Beispiel
a b c triple 4649 bd d op
Wenn es eine Zeichenkette gab
triple 4649
Ich möchte den in enthaltenen Raum halber Breite nicht kürzen, aber ich möchte den Raum anderer Zeichen kürzen
Mit anderen Worten
abc triple 4649 bddop
Ich möchte so etwas tun
a b c triple 4649 bd d op
Zu
a b c
triple 4649
bd d op
Halten Sie es vertikal wie
"a b c"Wann"bd d op "
Schneidet einen Raum mit halber Breite ab,
triple 4649
Versuchen Sie, die Richtlinie zu übernehmen, Räume mit halber Breite nicht zu kürzen
Zu diesem Zweck müssen Regeln für die Zerlegung und das Ersetzen von Zeichenketten festgelegt werden, die im Folgenden erläutert werden.
Die Regeln zum Zerlegen und Ersetzen von Zeichenketten lauten wie folgt.
Ein Trennzeichen zum Auflisten von Zeichenfolgen'!',`, Die Saite, die Sie nicht trimmen möchten@Einschließen in
Im obigen Beispiel
a b c!@ triple 4649 @!bd d op
Wird
Ich habe versucht, es sehr einfach mit StreamAPI zu implementieren
ReplaceUtil.java
package stringutil;
import java.util.stream.Stream;
public class ReplaceUtil {
public static String replacewhiteSpace(String target,String separator,String marker) {
return Stream.of(target.split(separator))
.map(s->replacer(s,marker))
.reduce((s1,s2)->s1+s2 )
.orElse("");
}
private static String replacer(String target,String marker) {
if(target.matches(String.format("%s[\\w| ].*%s", marker,marker))) {
return target.replaceAll(String.format("%s([\\w| ].*)%s", marker,marker), "$1");
}else {
return target.replaceAll(" ", "");
}
}
}
Recommended Posts