将所有“/”替换为 File.separator

2024-02-12

在Java中,当我这样做时:

    "a/b/c/d".replaceAll("/", "@");

我回来了

    a@b@c@d

但是当我这样做时:

    "a/b/c/d".replaceAll("/", File.separator);

它抛出 StringIndexOutOfBoundsException,我不知道为什么。我尝试查找此内容,但没有太大帮助。谁能帮我吗?


它说它就在那里文档 http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#replaceAll%28java.lang.String,%20java.lang.String%29:

请注意,替换字符串中的反斜杠 (\) 和美元符号 ($) 可能会导致结果与将其视为文字替换字符串时的结果不同;看Matcher.replaceAll.

And, in Matcher.replaceAll:

请注意,替换字符串中的反斜杠 (\) 和美元符号 ($) 可能会导致结果与将其视为文字替换字符串时的结果不同。美元符号可以被视为对如上所述捕获的子序列的引用,并且反斜杠用于转义替换字符串中的文字字符。

您需要做的是转义替换字符串中的所有转义字符,例如Matcher.quoteReplacement() http://docs.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html#quoteReplacement%28java.lang.String%29:

import java.io.File;
import java.util.regex.Matcher;

class Test {
    public static void main(String[] args) {
        String s = "a/b/c/d";
        String sep = "\\"; // File.separator;
        s = s.replaceAll("/", Matcher.quoteReplacement(sep));
        System.out.println(s);
    }
}

注意,我用的是字面意思\\ in sep而不是使用File.separator直接因为我的分隔符是 UNIX 分隔符 - 你应该能够使用:

s = s.replaceAll("/", Matcher.quoteReplacement(File.separator));

这输出:

a\b\c\d

正如预期的那样。

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

将所有“/”替换为 File.separator 的相关文章

随机推荐

  • 如何解决循环依赖

    我有3项服务 auth service ts account service ts http service ts 当用户注册时 我应该创建新帐户 因此我将 account service ts 导入到 auth service ts 我应
  • 在 Python 3 中拼出日期的每个单词

    在Python 3中 我想将2018 01 01更改为 2018年一月一日 我查看了格式指南Python 日期时间文档 https docs python org 3 library datetime html strftime and s
  • Visual Studio 2012:我可以在远程调试器中启动 .NET 4.5 应用程序(而不仅仅是附加)吗?

    平台 Visual Studio 2012 C WPF应用程序 Visual Studio 2012 远程调试器工具 我在 64 位系统上的 NET 4 5 应用程序在很早的阶段就崩溃了 https stackoverflow com qu
  • 使用getline后如何让cin工作?

    因此 我使用 cin getline str 10 h 读取了一个字符串 如您所见 我使用了自定义分隔符 h 并且希望读取最多 9 个字符 完成此操作后 我使用 cin gt gt n 将一个整数读入我的 int 变量 n 中 includ
  • 当用 R 抓取网页并且它没有价值时如何报告 NA?

    我从 booking com 的页面上抓取数据并创建数据框 我注意到并非所有酒店都有评级 我尝试过这个例如 Got the elements from Inspect code of the page titles page lt page
  • 哪些错误事件不会触发window.onerror?

    MDN 陈述如下 https developer mozilla org en US docs DOM window onerror 一些 许多error事件不触发window onerror 你必须 专门听他们的 这很好 但是哪些不调用o
  • 从现在开始 5 秒后用 Java 怎么说?

    我正在看日期文档 http www j2ee me javase 6 docs api java util Date html并试图找出如何表达现在 5 秒 这是一些伪代码 import java util Date public clas
  • 从命令行打开 Chrome

    我有以下批处理文件 echo off REM Starts a chrome browser with multiple tabbed sites C Users UserName AppData Local Google Chrome A
  • 两个 TCP/IP 套接字 send() 请求实际上在一个 TCP 消息中处理

    我的 C 程序中有两个 send 查看wireshark 我意识到它们是作为一条 TCP IP 消息发送出去的 我假设这是某种 TCP IP 优化 确定它们足够小 可以一起发送 然而 我正在从头开始重建一个旧程序 并且我正在基于它的 TCP
  • 圣杯。 JSON。他的方法?

    我彻夜未眠寻找有关如何使用的信息JSON in Grails 我找到了信息JSON closure 我们只能使用一种方法 array 没有其他 这是真的吗 下一个小问题 我在这里找到 http www jiramot info mini g
  • 无法在 ruby​​ on Rails 上访问本地主机

    当我运行服务器并转到localhost 3000我收到此错误 ActiveRecord ConnectionNotEstablished 没有带 id 的连接池 主要发现 有问题的代码 activerecord 5 0 0 lib acti
  • 如何在 Symfony 中将实体导出为 CSV?

    我使用以下代码输出 CSV 但运行时出现空白屏幕 基本上我的困惑在于 DoctrineORMQuerySourceIterator 因为我不明白如何正确使用它 我假设我必须列出属性名称 我正在使用索纳塔导出器 https github co
  • 在 Elastic Search 中模拟字段折叠/按字段分组

    Elastic Search 目前 自 0 18 4 起 不支持字段折叠 有没有一个好的方法来模拟这个 以避免N搜索查询 可能不是您正在寻找的答案 但是 据我所知 并且根据this https github com elasticsearc
  • 在 powerbi 中使用相同的过滤器过滤两个表

    我有两个表显示 PowerBI 中的国家 地区数据 一个表包含不同国家 地区的销售数据 另一个表显示每个国家 地区的统计数据 然后我有一个仪表板 其中包含每个表的图表 我想要一个过滤器来过滤两个表中的国家 地区列 即 如果我过滤美国 我将得
  • 编译 32 位二进制文​​件:'__int128' 之前应有非限定 ID

    我正在努力将我的代码移植到 Mac 它可以在我的 64 位 Windows 机器上正常编译 显然我正在使用的库之一 Awesomium 没有编译为 64 位代码 因此我必须将代码编译为 32 位二进制文 件 我在尝试使用 GCC 4 8 编
  • 嵌套组件内的 React.memo 从不调用 areEqual,总是重新渲染

    我突然好奇 React memo 今天的表现如何 看来 React memo 不能在嵌套函数组件中工作 但可以在组件主返回和返回 React memo 组件的嵌套函数中工作 这是预期的行为还是有其他方法使 React memo 与嵌套功能组
  • 用C画形状时用什么?

    我一直遇到一些问题 试图弄清楚 header 对于设法获取屏幕并使用 C 在其中绘制形状很有用 尝试使用 graphics h 但对我不起作用 我想 graphics h 可能应该在 C 中使用 而不是在 C 中使用 我真的不知道 如果有人
  • 接受vertx api中相同键的参数列表

    如何在路由器 GET 方法中接受同一键中的参数列表 例如 我的查询参数名称为 personId 但在 get 请求中 可能会出现多个 列表 personId 如何在 vertx 中处理这个问题 我在中找不到任何这样的方法HttpServer
  • PyQt 文件浏览 - 设置默认选项?

    我一直在尝试在我正在设计的 GUI 中实现一个文件浏览小部件 我正在使用 QFileDialog 模块 它工作得很好 我可以使用以下代码行浏览和保存文件 filenames QFileDialog getOpenFileName 我的小部件
  • 将所有“/”替换为 File.separator

    在Java中 当我这样做时 a b c d replaceAll 我回来了 a b c d 但是当我这样做时 a b c d replaceAll File separator 它抛出 StringIndexOutOfBoundsExcep