java - System.getenv() 返回\

标签 java regex exec

我正在尝试使用 System.getenv 函数创建到计算机上某个位置的路径,它在路径中返回 \ 而不是 / 这是我需要的。我尝试过使用 ReplaceAll 方法,但它返回一个错误:

Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
 ^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.lang.String.replaceAll(Unknown Source)
    at Launcher.start(Launcher.java:75)
    at Launcher.Download(Launcher.java:55)
    at Launcher.<init>(Launcher.java:31)
    at Launcher.main(Launcher.java:17)

代码行是:

InputStream OS = Runtime.getRuntime().exec(new String[]{"java",System.getenv("APPDATA").replaceAll("\\", "/")+"/MS2-torsteinv/MS2-bin/no/torsteinv/MarsSettlement2/Client/Client.class"}).getErrorStream();

最佳答案

您需要加倍反斜杠:

.replaceAll("\\\\", "/")

规范的正则表达式确实是 \\,但在 Java 中,正则表达式位于字符串中,而在 Java 字符串中,需要用另一个反斜杠转义文字反斜杠。因此 \\ 变为 "\\\\"

关于java - System.getenv() 返回\,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8779363/

相关文章:

python - 从python中的字符串中剥离@标签

sql-server - 如何在 T-SQL 中动态使用表类型

c - 子进程之间的 UNIX 管道

java - JBOSS 库不在类路径中

java - 如何从 Java 枚举所有启用的 NIC 卡的 IP 地址?

java - 如何从 Score.java 到 Test.java 的另一个类获取数组

java - 如何在 java 中使用 HTTPDELETE 作为 RequestBody 发送列表参数

php - 如何检查字符串是否包含任何语言的字母?

c# - 用双反斜杠替换单反斜杠

c - 将 execl 与多个子进程一起使用