首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.getenv()返回\

System.getenv()返回\
EN

Stack Overflow用户
提问于 2012-01-09 00:57:27
回答 3查看 1.1K关注 0票数 0

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

代码语言:javascript
复制
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)

代码行是:

代码语言:javascript
复制
InputStream OS = Runtime.getRuntime().exec(new String[]{"java",System.getenv("APPDATA").replaceAll("\\", "/")+"/MS2-torsteinv/MS2-bin/no/torsteinv/MarsSettlement2/Client/Client.class"}).getErrorStream();
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-09 01:00:09

您需要将反斜杠加倍:

代码语言:javascript
复制
.replaceAll("\\\\", "/")

规范的正则表达式确实是\\,但是在Java正则表达式是在字符串中,并且在Java字符串中,文字反斜杠需要用另一个反斜杠进行转义。因此,\\变成了"\\\\"

票数 4
EN

Stack Overflow用户

发布于 2012-01-09 01:00:47

在Java正则表达式中,您必须转义反斜杠,然后在java字符串中再次转义。这使得总共有四个反斜杠。

代码语言:javascript
复制
replaceAll("\\\\", "/")
票数 3
EN

Stack Overflow用户

发布于 2012-01-09 01:13:08

,它在路径中返回一个\,而不是我需要的/。

平台缺省设置确保 what you need。

代码语言:javascript
复制
import java.io.File;

class FormPath {
    public static void main(String[] args) {
        String relPath = "/MS2-torsteinv/MS2-bin/no/" +
            "torsteinv/MarsSettlement2/Client/Client.class";
        String[] parts = relPath.split("/");
        File f = new File(System.getenv("APPDATA"));
        System.out.println(f + " exists: " + f.exists());

        for (String part : parts) {
            // use the File constructor that will insert the correct separator
            f = new File(f,part);
        }
        System.out.println(f + " exists: " + f.exists());
    }
}

输出

代码语言:javascript
复制
C:\Users\Andrew\AppData\Roaming exists: true
C:\Users\Andrew\AppData\Roaming\MS2-torsteinv\MS2-bin\no\torsteinv\MarsSettlement2\Client\Client.class exists: false
Press any key to continue . . .
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8779363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档