我正在编写一些代码,以便使用在终端中加载和运行文件的进程来运行shell脚本。我遇到的问题是,由于空格的原因,终端无法识别文件名,例如:
"$ ./run_file.sh foo bar.ss"
应作为在终端中运行
"$ ./run_file.sh foo bar.ss"
以下是更改代码以替换它:
JPanel panel1 = new JPanel();
JButton button = new JButton("Run");
button.setAlignmentX( Component.CENTER_ALIGNMENT);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
run();
}
});
//button.setAlignmentX(0.5);
panel1.add(button);
panel1.add(Box.createVerticalGlue());
panel1.add(button);
menuB = new JMenuBar();
JMenu dropD = new JMenu("File");
menuB.add(dropD);
JMenuItem loadR = new JMenuItem("Load file");
JMenuItem quit = new JMenuItem("Quit");
dropD.add(loadR);
dropD.add(quit);
loadR.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event) {
JFileChooser fileopen = new JFileChooser();
int r= fileopen.showDialog(panel, "Load file");
if (r == JFileChooser.APPROVE_OPTION) {
File file = fileopen.getSelectedFile();
String string = file.toString();
string = string.replaceAll(" ", " ");
//String output = aa.replaceAll("/",Character.toString(File.separatorChar));
System.out.println(string);
loadFile = file;
}
}
});
我试过使用String.replaceAll,但得到
java:66: illegal escape character
我意识到我可以使用File.separatorChar:
string = string.replaceAll(" ", Character.toString(File.separatorChar)+" ");
但这似乎并不能取代任何东西。。。任何帮助都将不胜感激。
感谢
如果要将字符(即转义符)放入字符串中,则需要对其进行转义:
string = string.replaceAll (" ", "\ ");
单个是转义序列的前导字符,例如带有
n
(换行符)或r
(回车符)。单字符转义的完整列表是:
b backspace
t tab
n linefeed (newline)
f form feed
r carriage return
" double quote
' single quote
\ backslash
这是对诸如