非法转义字符后跟空格

2024-01-09

我正在编写一些代码来使用在终端中加载和运行文件的进程来运行 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)+" ");

但这似乎并不能取代任何东西...... 任何帮助将非常感激。

Thanks


如果你想把\字符串中的字符(即转义字符),您需要对其进行转义:

string = string.replaceAll (" ", "\\ ");

单个\是转义序列前导字符,例如\n(换行符)或\r(回车)。单字符转义的完整列表是:

\b    backspace
\t    tab
\n    linefeed (newline)
\f    form feed
\r    carriage return
\"    double quote
\'    single quote
\\    backslash

这是八进制转义序列的补充,例如\0, \12 or \377.

你的原因separatorChar解决方案不起作用是因为这给了你分隔器 char (/在 UNIX 及其同类下),而不是转义字符\你需要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

非法转义字符后跟空格 的相关文章

随机推荐

  • 如何将支持库小吃栏文本颜色设置为 android:textColor 以外的颜色?

    因此 我开始在设计支持库中使用新的 Snackbar 但我发现当您在主题中定义 android textColor 时 它会应用于 Snackbar 的文本颜色 如果您的主要文本颜色是深色 这显然是一个问题 有谁知道解决这个问题的方法或者对
  • 带有 ngmodel 的 Angular 2 动态表单示例导致“表达式在检查后已更改”

    我正在寻找使用这个example https angular io docs ts latest cookbook dynamic form htmlAngular 文档中提供了与 ngmodel 结合使用动态表单的功能 以便动态表单控件可
  • 路由器 waitOn 在每次渲染时等待订阅

    我有一条路线waitOn返回一个钩子Meteor subscribe 每次触发路线时 我都会看到我的旋转器loadingTemplate在查看实际数据之前先简单介绍一下 我本以为我只需要等待订阅下载一次 即第一次 如果我做错了 请提出更好的
  • 如何使用 Files.lines(...).forEach(...) 读取文件?

    我目前正在尝试从我拥有的纯文本文件中读取行 我在另一个 stackoverflow 上发现 用Java读取纯文本文件 https stackoverflow com questions 4716503 best way to read a
  • Angularjs ui 路由器正则表达式

    我正在尝试匹配 1 个可以有 2 种值的参数 当前 或至少包含 10 个密码的数字 我试过了 url history code current 0 9 10 当我使用这个正则表达式时 我的应用程序会转到history current 但是当
  • 克服 Windows Azure Sql 数据库 150 GB 大小限制

    SQL Azure 的数据库大小限制为 150 GB 我已多次阅读他们的文档并在网上搜索 但我不清楚这一点 使用联合是否允许开发人员超越 150 GB 的数据库 例如我可以有几个 150GB 的联邦成员吗 如果没有 我如何在 Windows
  • js 中的脚本

    我有一个jsp页面 我根据请求参数动态添加一些内容到页面 请求将返回一个数组 基于此我必须创建一个下拉列表 我想在更改另一个下拉菜单时执行此操作 因此只能使用 javascript 来完成 但我无法在 js 中使用 scriptlet 这真
  • Node.js 快速路由和控制器有什么区别?

    与传统的快速路线控制器相比 有什么不同或更强大的地方吗 如果您有一个 Express 应用程序并定义了模型 那么它是否会成为 MVC 应用程序 还是还有更多必要 我只是想知道我是否因为不升级到更合法的 控制器 而错过了节点表达应用程序中的额
  • 在 ASP.NET MVC 上使用绝对路径访问视图

    我正在尝试以这种方式访问 视图 return View Items Details aspx 我收到此错误 无法找到视图 Items Details aspx 或其主视图 搜索了以下位置 Items Details aspx 在 Items
  • 用于设置 IIS 环境变量的 PowerShell 脚本

    如何使用 PowerShell 自动执行以下步骤 转到 IIS 并选择一个网站 网站名称很可能会作为参数在脚本中传递 Go Inside the Configuration Editor Choose the aspNetCore Sect
  • 为什么 .NET Remoting 服务器无法向 Internet 客户端发送事件

    如您所知 NET Remoting 有一些限制 其中之一是服务器无法跨 NAT 防火墙向 Internet 客户端发送事件 这是一个证据 http social msdn microsoft com forums en US netfxre
  • 如何为自定义 B2B 应用程序添加 Apple ID?

    我正在尝试将自定义 B2B 应用程序添加到 iTunes 连接 从 Apple 文档看来应该有一个文本框来输入客户端 Apple ID 但我似乎没有类似的内容 Apple 文档如下所示苹果文档 https i stack imgur com
  • 在 django 形式中使用reverse()

    我正在尝试使用 django 的撤销 https docs djangoproject com en dev topics http urls reverse我的自定义小部件的 django 表单定义中的函数 但出现错误 Improperl
  • 网站的 NuGet 包恢复

    我正在尝试使用 NuGet Package RestoreVS2010 视觉源安全 它对我来说部分有效 这是从哪里来的 NuGet 没有获取丢失的包 https stackoverflow com questions 17797052 nu
  • admob 与 AndEngine + google play 服务集成时无法显示游戏画面

    我正在使用 andengine 通过 google play 服务进行游戏开发 我的游戏运行良好 但是 一旦我添加了 admob 并调用了 onSetContentView 回调 我的游戏屏幕就会变黑 只有广告可见 这是我的回调 onSet
  • ASP.NET Core 3.0 中的本地化

    我正在尝试使用 resx 文件使我的项目本地化 对我来说 这不起作用 但对我正在从事该项目的同事来说 它也起作用 有关代码的一些详细信息 Startup cs 文件 public void ConfigureServices IServic
  • Matlab 矩阵中非连续预定义值的出现顺序

    我有一个 9 列矩阵 如下所示 X X X X X X 0 2 0 X X X X X X 6 2 0 X X X X X X 6 2 0 X X X X X X 7 2 0 X X X X X X 8 2 0 X X X X X X 8
  • 传递 HTTP 引荐来源网址(站点 A、B、C - A 到 C)?

    这是一个最好用例子来说明的问题 用户前往Site A 然后点击进入Site B 引用站点现在是站点 A 同一用户点击进入Site C来自站点 B 引用站点现在是站点 B 我想知道是否可以将站点 C 的引用站点显示为站点 A 如果愿意 则为初
  • 从服务器有没有办法知道我的页面正在 Iframe 中加载

    我在我的网页中使用 sammy js 如果有人在 IFrame 对于 IE 中使用此网页 它只会将整个页面重定向到 IFrame 的位置 所以 我在想是否有一种方法可以检查如果 IFrame 正在请求我的页面 如果是这种情况 那么我可以简单
  • 非法转义字符后跟空格

    我正在编写一些代码来使用在终端中加载和运行文件的进程来运行 shell 脚本 我遇到的问题是由于空格而导致终端识别文件名 例如 run file sh foo bar ss 应该在终端中运行 run file sh foo bar ss 这