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