Directorio de artículos
Escenario problemático
Al crear una herramienta de generación de código, debe almacenar el resultado del código correspondiente en src / test / resources y generarlo de acuerdo con la ruta del paquete. Donde la ruta del paquete se .
reemplaza como separador de directorio, pruebe el código de la siguiente manera:
import java.io.File;
public class Test {
public static void main(String[] args){
String packageName = "com.test.aba";
String path = packageName.replaceAll("\\.", File.separator);
System.out.println(path);
}
}
Cuando se solicita informar un error, el mensaje de error es el siguiente:
Exception in thread "main" java.lang.IllegalArgumentException: character to be escaped is missing
at java.util.regex.Matcher.appendReplacement(Matcher.java:809)
at java.util.regex.Matcher.replaceAll(Matcher.java:955)
at java.lang.String.replaceAll(String.java:2223)
at com.gop.yy.api.web.Test.main(Test.java:15)
Este blog trata principalmente sobre la solución a este problema.
Entorno problemático
software | versión |
---|---|
JDK | 1.8 |
causas del problema
En la plataforma de Windows, File.separator
el valor \
se reconoce como un carácter de escape cuando se reemplaza, por lo que el parámetro recibido por el ""
método es , por lo que el método informa un error.
solución
Para \
realizar la conversión, conviértalo en un carácter sin escape. Aquí es necesario utilizar Matcher.quoteReplacement
un método, el método se define de la siguiente manera:
java.time.Matcher.quoteReplacement(String s)方法
返回指定String的文字替换String。
参数
s - 要文字化的字符串。
返回值
文字字符串替换。
resultado
El último código es el siguiente:
import java.io.File;
public class Test {
public static void main(String[] args){
String packageName = "com.test.aba";
String path = packageName.replaceAll("\\.", Matcher.quoteReplacement(File.separator));
System.out.println(path);
}
}
No se informa ningún error durante la operación.
para resumir
Piensa más.
Pedir elogios
Si mi artículo es útil para todos, puede hacer clic en Me gusta o en favorito en la parte inferior del artículo;
si hay una buena discusión, puede dejar un mensaje;
si desea continuar viendo mis artículos futuros, puede hacer clic en Seguirlo
. puede escanear el siguiente código QR para seguirme la cuenta pública: Fengye Zhixuege, ¡mira mi última acción!