我正在尝试清理/标准化文件目录的某些用户输入。 Windows执行\
和* nux / * nix执行/
。在java \
中必须转义为\\
,否则会出现编译错误。
如何从用户输入中读取\
并将其替换为/
?
private String escapeDirs(String raw) {
return raw.replace("\\", "/");
}
这不起作用......大概是因为它是\
而不是\\
。但我做不到raw.replace("\", "/");
......
示例用户输入:C:\User\SomeUser\SomeDir
答案 0 :(得分:1)
如果您正在为windows和unix构建解决方案,这是开发人员需要注意的问题之一
有两种方法
单独使用\处理Windows的转义字符,并单独执行unix的路径
在Windows的路径中也使用/,在unix和windows中使用相同的
示例
在Windows中
c:/ temp的作用与c:\ temp
相同在Unix中
的/ tmp /
希望有所帮助
由于 ABHI
答案 1 :(得分:1)
使用character version of replace代替字符串版本。
private static String escapeDirs(String raw) {
return raw.replace('\\', '/');
}
答案 2 :(得分:1)
试试这个
public static String backlashReplace(String myStr){
final StringBuilder result = new StringBuilder();
final StringCharacterIterator iterator = new StringCharacterIterator(myStr);
char character = iterator.current();
while (character != CharacterIterator.DONE ){
if (character == '\\') {
result.append("/");
}
else {
result.append(character);
}
character = iterator.next();
}
return result.toString();
}
答案 3 :(得分:1)
这有效:
private String escapeDirs(String raw) {
return raw.replace("\\", "/");
}
replace()
方法实际上取代了所有目标的出现次数,
您最初使用的是replaceAll()
,它取代了正则表达式。它使这项工作,做到这一点:
private String escapeDirs(String raw) {
return raw.replace("\\\\", "/");
}
反斜杠的正则表达式是\\
,而在java中,String常量需要每个都被转义,因此需要4个。