`
superxielei
  • 浏览: 267113 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

separator在执行replaceAll时异常的解决办法

    博客分类:
  • java
阅读更多

在java中,为了保证跨平台时目录可以正确被访问,我们会使用到File.separator来获取当前系统的目录分隔符。

但是如果使用replaceAll替换这个分隔符会出现下边的异常。

path = path.replaceAll(File.separator,"-");
=====================================
Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1

我们来看一下replaceAll的API描述

Note that backslashes (\) and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string; see Matcher.replaceAll. Use Matcher.quoteReplacement to suppress the special meaning of these characters, if desired.

 注意:”\“和"$"在做为替换字符串的时候,可能会出现一个不同的结果,建议我们使用Matcher.quoteReplacement函数先对替换字符进行转译。

System.out.println(File.separator); //输出 "\"
System.out.println(Matcher.quoteReplacement(File.separator));  //输出"\\"
System.out.println("/"); //输出 "/"
System.out.println(Matcher.quoteReplacement("/")); //输出 "/"
System.out.println("$"); //输出 "/" 
System.out.println(Matcher.quoteReplacement("$")); //输出 "/"

上边的语句应该修改为:

path = path.replaceAll(Matcher.quoteReplacement(File.separator),"-");

最后来看看Matcher.quoteReplacement(sep)的API说明。

java.util.regex.Matcher
public static java.lang.String quoteReplacement(java.lang.String s)
Returns a literal replacement String for the specified String. This method produces a String that will work as a literal replacement s in the appendReplacement method of the Matcher class. The String produced will match the sequence of characters in s treated as a literal sequence. Slashes ('\') and dollar signs ('$') will be given no special meaning.
Parameters:
s - The string to be literalized
Returns:
A literal string replacement
Since:
1.5

 

分享到:
评论

相关推荐

    android java.lang.IllegalArgumentException contains a path separator

    在Android开发中,Java编程时常会遇到`java.lang.IllegalArgumentException`异常,这通常表示传入的参数不符合方法的要求。在本例中,错误信息“contains a path separator”提示我们问题可能与路径分隔符有关,这...

    WPF 已知问题 Separator 无法应用 ContextMenu 定义的默认样式.rar

    这个问题主要出现在尝试为`Separator`设置自定义`ContextMenu`时。本文将深入探讨这个问题,并提供解决方案。 首先,让我们了解`Separator`和`ContextMenu`的基本概念。`Separator`是WPF中的一个控件,通常用作分隔...

    Window系统无法调用OpenCV报错Directory separator should not appear in library name

    Window系统无法调用OpenCV代码报错:java.lang.UnsatisfiedLinkError: Directory separator should not appear in library name: C:\Windows\System32\opencv_java343.dll。出现该问题主要是安装的Windows系统缺乏...

    PHP常量DIRECTORY_SEPARATOR原理及用法解析

    为了解决这个问题,可以使用 `DIRECTORY_SEPARATOR` 替换硬编码的反斜杠,这样无论在哪种操作系统上,代码都能正确处理路径。 总之,`DIRECTORY_SEPARATOR` 是PHP中处理路径时的关键常量,它允许你在不关心操作系统...

    fileseparator

    标题中的"fileseparator"通常指的是文件路径分隔符,在Windows系统中,它是反斜杠("\"),而在大多数Unix/Linux系统中,它是正斜杠 ("/")。这个术语在编程和文件处理中非常常见,用于构建文件路径。在这个上下文中,...

    解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用

    在PHP编程语言中,`DIRECTORY_SEPARATOR` 和 `PATH_SEPARATOR` 是两个非常重要的预定义常量,它们主要用于处理路径和包含文件时的平台兼容性问题。理解这两个常量的用途可以帮助开发者编写跨平台的PHP代码。 1. **...

    phpPATH_SEPARATOR判断当前服务器系统类型实例

    在进行服务器端编程时,特别是涉及到与操作系统交互的部分,熟练掌握`PATH_SEPARATOR`等常量的应用是十分必要的。希望本文对理解PHP的`PATH_SEPARATOR`常量及其用途有所帮助,同时也提醒开发者关注更多与系统兼容性...

    php PATH_SEPARATOR判断当前服务器系统类型实例

    如果项目是在封闭的环境中运行,且只需要区分Windows和非Windows系统,那么使用PATH_SEPARATOR常量的方法是非常方便的。如果应用需要更详细的系统信息,则可能需要依赖其他PHP函数或系统调用来获取更多信息。

    php中常量DIRECTORY_SEPARATOR用法深入分析

    在 PHP 开发中,文件路径分隔问题是一个经常遇到且必须...无论是在直接引用文件路径,还是在进行路径字符串动态处理时,合理使用 DIRECTORY_SEPARATOR 都能减少因平台差异导致的问题,并提高代码的可维护性和可移植性。

    java.lang.UnsupportedOperationException异常(csdn)————程序.pdf

    在Java编程中,某些方法可能在特定对象或特定条件下不支持某个操作,当尝试执行这些操作时,就会抛出此异常。 在给定的描述中,问题出在MyBatis框架的使用上。MyBatis是一个优秀的持久层框架,它允许开发者将SQL...

    使用System.getProperty(line.separator).md

    这是本人在进行使用递归替换HTML文件中的图片内容时,所遇到的问题解决方案,喜欢能够帮到大家,让自己懂得东西越来愈多,做更多的分享

    php相对路径解决方法

    在PHP开发过程中,路径管理是不可或缺的一部分,尤其是在处理文件包含、资源引用以及脚本执行时。"php相对路径解决方法"这个主题主要关注如何在PHP中有效地使用相对路径来解决文件定位的问题。以下是对这个话题的...

    node-separator:为您的控制台输出创建分隔符

    #分隔器 日志分隔符到您的控制台等等 ns = require('separator');ns.separator('=').log(); // logs a string of ='s to the console => ==========...ns.separator('+=', 13).log(); // logs to the console, ...

    XML_Separator

    在Java中,处理XML文件时,我们可能会遇到需要分割XML内容的情况,这就是"XML_Separator"所指的场景。这个项目可能是一个用于解析XML并按照特定规则分割其内容的工具或库。 在Java中,处理XML主要依赖于`javax.xml`...

    详解MyBatis直接执行SQL查询及数据批量插入

    在使用时,需要注意SQL字符串的编写规范,理解#{}和${}的区别,以及合理利用`<foreach>`标签进行批量操作。这使得MyBatis不仅简化了数据库操作,也提升了开发效率。在实际应用中,应结合业务需求,合理选择查询方式...

    MyBatis MapperProvider MessageFormat拼接批量SQL语句执行报错的原因分析及解决办法

    在使用MyBatis进行批量数据插入时,可能会遇到MapperProvider结合MessageFormat拼接SQL语句执行时出现错误的问题。本文将深入分析这种报错的原因,并提供相应的解决策略。 首先,让我们看看问题的根源。在给出的...

    《信息安全系统设计基础》第1周学习总结.docx

    解决方法是检查并确保命令前有正确的制表符,或在编辑器中重新输入。 通过这一周的学习,我们不仅掌握了GCC、GDB和Makefile的基本用法,还了解了如何解决在实际操作中可能遇到的问题。这些知识和技能对于进行安全的...

Global site tag (gtag.js) - Google Analytics