J'écrirai sur le fonctionnement d'une chaîne de caractères légèrement compliquée
Par exemple
a b c triple 4649 bd d op
Quand il y avait une chaîne de caractères
triple 4649
Je ne veux pas rogner l'espace demi-largeur inclus dans, mais je veux rogner l'espace des autres caractères
En d'autres termes
abc triple 4649 bddop
Je veux faire quelque chose comme ça
a b c triple 4649 bd d op
À
a b c
triple 4649
bd d op
Tenez-le verticalement comme
"a b c"Quand"bd d op "
Coupe un espace demi-largeur,
triple 4649
Essayez d'adopter la politique de ne pas couper les espaces demi-largeur
Pour cela, il est nécessaire de définir des règles concernant la décomposition et le remplacement des chaînes de caractères, qui seront expliquées ci-dessous.
Les règles de décomposition et de remplacement des chaînes de caractères sont les suivantes.
Un délimiteur pour lister les chaînes'!',`, La chaîne que vous ne voulez pas couper@Enclencher dans
Dans l'exemple ci-dessus
a b c!@ triple 4649 @!bd d op
Devient
J'ai essayé de l'implémenter très simplement en utilisant StreamAPI
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