2015-10-15 29 views
1

你好我正在使用java程序,我有一个字符串(一个路径),我想用“/”来改变“\”。更改字符串中的字符(路径)Java

这是我的程序,但我保持着相同的路径,没有变化。

package Test; 

import javax.swing.JFileChooser; 
import javax.swing.filechooser.FileNameExtensionFilter; 

public class Filechooser { 

    public static void main(String[] args) { 

     JFileChooser fc=new JFileChooser(); 
     fc.setApproveButtonText("Open"); 
     fc.setFileSelectionMode(JFileChooser.FILES_ONLY); 
     fc.addChoosableFileFilter(new FileNameExtensionFilter("text Documents", "txt")); 
     fc.setAcceptAllFileFilterUsed(true); 
     int returnVal=fc.showSaveDialog(null); 
     if (returnVal == JFileChooser.APPROVE_OPTION) { 
     String path= fc.getSelectedFile().getAbsolutePath(); 
     System.out.println(path); 
     String temp = path.replaceAll("\"", "/"); 
     System.out.println(temp); 
    } 

} 
+0

UFF功课...... – Apurva

+0

你替换“字符,而不是\字符。改为'“\\\\”'而不是'“\”“'。您需要三个转义反斜杠来迎合replaceAll接受regex参数的事实。 – JonK

回答

4

尝试使用:

String temp = path.replace("\\", "/"); 

replaceAll(str, str)需要一个正则表达式,不是一个简单的字符/串,所以你不能使用的replaceAll这样。

\\意味着在Java中\,而\"意味着",所以要小心这一点:)

+0

使用\\\\而不是\\(我的初始评论并没有考虑到它是一个正则表达式) – JonK

4

在你行的问题是,您要更换\"而不是\\\"可能是没有发现在所有在你的字符串,所以没有改变。

改变这一行String temp = path.replaceAll("\"", "/");

这一行String temp = path.replace("\\", "/");,它应该工作。

编辑:在评论中提醒,使用replaceAll不起作用,因为它需要一个正则表达式。所以你想使用replace()它完全相同的东西,而不需要正则表达式。

+0

为了帮助他理解,我只是补充一点,'\'是正则表达式中的一个特殊字符,并且具有被逃脱。 –

+0

\是一个正则表达式中的特殊字符,你需要将其转义出来... – assylias

+0

@Codebender哎呀抱歉,完全错过了这一点,编辑它的方式。感谢您注意 – LBes

-2

您不能将“\”字符添加到String对象。 但对于替换另一个字符一个字符,你可以使用此代码:

int index = str.indexOf("#"); 
String result = str.substring(0,index) + "*" + str.substring(index+1,str.length()); 
+0

为什么你会这样做,而不是'replaceAll'? – JonK

+0

我忘记了这个方法。你的!!!!!!!!!!!! –