`
hz_chenwenbiao
  • 浏览: 1007932 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java replaceall 用法(转)

阅读更多
public class TryDotRegEx {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "111.3.22.11";
str=str.replaceAll("(^|\\.)(\\d)(\\.|$)","$100$2$3");
str=str.replaceAll("(^|\\.)(\\d{2})(\\.|$)","$10$2$3");
str=str.replaceAll("(^|\\.)(\\d{2})(\\.|$)","$10$2$3");
str=str.replaceAll("(^|\\.)(\\d{1})(\\.|$)","$100$2$3");
        
System.out.println(str);
}

}

 

打印结果:111,003,022,011;

 

正则表达式,关于String.replaceALL(..)

class t1 {
       public static void main(String a[]) {
         String s = 'E:\\jbx\\x9\\io9';
         String ss;
//把路径s中的'\'换为'\\',为何还要整8个'\'?我以为4个就行了。
         ss = s.replaceAll('\\\\', '\\\\\\\\         System.out.println('s= ' + s);
         System.out.println('ss=' + ss);
//output:  
//s= E:\jbx\x9\io9
//ss=E:\\jbx\\x9\\io9
       }
}

 

这里的关键是String.replaceAll()是用regular expression 来作为参数的。但是java本身的字符串对于转义符\也有类似的处理。首先,java会把“\\\\”解释成一个字符串(其中包含两个char)——“\ \”这个就是你在JDK的文档里看到的

 
接下来,由于replaceAll是以正则表达式作为参数,所以“\\”被解释成一个regex。对于一个regex来说这就代表着一个字符,就是“\”。对后面的那个8个\来说,最终会被解释成“\\”。

 

换言之,假设String.replaceAll()是以普通字符串,而不是regex作为参数,那么这样写代码: String target = source.replaceAll('\\', '\\\\'); 就可以了。

 


在replaceAll(String,String)方法中需要特殊处理英文状态的括号,在网上找了一下,可以使用下面的写法将英文括号替换成其他字符(比如中文全角括号):str1.replaceAll("\\(","(");

 

Java String replaceAll and regex

在java中要将一个字符串的中$符号去除。我是这样写的:
String tmp = "-$125402.00";
tmp.replaceAll("$","");
可是执行去来的结果并没有把$去除。后来找资料才发现要这样写
tmp.replaceAll("\\$","")才可以。
String replaceAll(String regex, String replacement)中的两个参数都是regex。尤其是当第二个参数replacement是用户输入或指定的字符串时,如果其中包含regex特殊字符(主要是\和$)而不加注意,就容易导致问题引发异常。这种情况下如果只是简单的字符串替换而无需regex引擎参与的话,就不要用 replaceAll好了。JDK1.5中加入了String replace(CharSequence target, CharSequence replacement),可以用它。JDK1.4或以下,自己搞一个好了,如oldReplace:http://www.javapractices.com/Topic80.cjp
    

我在写程序的时候,需要将"\"字符写入一个文本文件,开始以为这不是个什么问题,转换一下就好了嘛,代码如下:

targetPath = targetPath.replaceAll("\\", "\\\\");
fileOperate.createFile(fileName, targetPath);

 

原以为没有问题,这样就可以先在读入的字符串中把"\"转换为"\\",然后在写入文本文件时就会写成"\",没想到,报如下错误:

java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\

回来查了资料才发现,java的replaceAll函数,使用的是正则表达式作为转换依据,而"\"在正则表达式中也是特殊字符,最后,写成下面的代码才达到了我预想的目的:

targetPath = targetPath.replaceAll("\\\\", "\\\\\\\\");
fileOperate.createFile(fileName, targetPath);

 

=====================================

replace和replaceAll方法的区别:

主要就是后者是基于规则表达多的替换,而前者是一般的基于字符或字符序列本身的替换。

比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号,replace就做不到,因为它不是基于规则表达多的替换。

分享到:
评论

相关推荐

    Java中replace、replaceAll和replaceFirst函数的用法小结

    Java中的`replace`、`replaceAll`和`replaceFirst`是字符串操作中常见的方法,用于替换字符串中的特定子串。它们都是`String`类的方法,但各自有不同的行为和用途。 1. `replace(CharSequence target, CharSequence...

    Java replaceAll()方法报错Illegal group reference的解决办法

    在Java编程中,`replaceAll()`方法是用于字符串替换的一个强大工具,它接受两个参数:一个正则表达式作为第一个参数,以及一个替换字符串作为第二个参数。然而,如果使用不当,可能会遇到`Illegal group reference`...

    浅谈Java中replace与replaceAll区别

    而 Java 中的 replaceAll 方法则不同,replaceAll(String regex, String replacement) 方法使用给定的 replacement 替换字符串中所有匹配给定的正则表达式的子字符串。这个方法的参数是 regex(正则表达式)和 ...

    java html串转换成文本串

    4. 处理特殊情况:如果需要更复杂的处理,比如保留某些标签的格式(如段落),可以使用`outerHtml()`方法结合正则表达式进行处理。例如,保留段落标签: ```java String cleanedText = doc.select("p").outerHtml()....

    js使用正则实现ReplaceAll全部替换的方法

    第三种方法尤其有用,因为它可以直接调用,语法上与Java或其他一些语言的replaceAll方法一致,提高了代码的可读性和易用性。 此外,文中还提到了两个JavaScript正则表达式工具网站,提供了在线测试和在线生成正则...

    Java中replace和replaceAll的区别

    replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是:  1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也是字符串);  2)...

    Java中转义字符反斜杠\的代替方法及repalceAll内涵解析

    Java中转义字符反斜杠的代替方法及repalceAll内涵解析 ...Java中转义字符反斜杠的代替方法需要根据不同的情况选择合适的方法,例如使用StringEscapeUtils工具类或replaceAll方法,以便正确地处理字符串转义问题。

    java对象转换成xml格式

    在Java编程中,将对象转换为XML...总结来说,Java中将对象转换为XML格式的方法多样,可以根据具体需求和项目规模选择合适的方法。在实际应用中,理解这些API的工作原理和使用方式对于优化性能和提高代码质量至关重要。

    java 日志的数据脱敏的实现方法

    然而,这种方法存在一个缺点,即无论何时数据被访问或序列化,都会使用脱敏后的数据,这可能并不总是理想的。 2. **利用日志组件过滤**: 另一个方法是通过日志框架(如Log4j或SLF4J)设置过滤器,匹配并替换特定...

    java常用方法转换时间等等

    在Java编程中,掌握一些常用的方法对于提升开发效率和代码质量至关重要。本篇文章将围绕"java常用方法转换时间等等"这一主题,详细讲解Java中处理时间、算法、加密解密以及数据库连接等核心知识点。 首先,让我们从...

    浅谈java中replace()和replaceAll()的区别

    与 `replace()` 不同,`replaceAll()` 方法使用正则表达式作为其第一个参数,这使得它具有更强大的功能。它可以执行基于规则的替换,例如替换所有数字为星号: ```java src.replaceAll("\\d", "*"); // 输出:ab**f...

    java去除空格、标点符号的方法实例.docx

    在Java中,去除空格可以使用trim()、replace()、replaceAll()等方法。 1. 使用trim()方法去除首尾空格 trim()方法可以去除字符串的首尾空格,但是不能去除中间的空格。例如: ```java String str = " hello world ...

    数据库字段名转换成Java字段名

    在某些情况下,如使用JPA,可以通过在Java实体类的字段上使用特定的注解(如`@Column`),指定数据库中的字段名。 理解这些知识点有助于提升开发效率,减少错误,并确保代码的整洁和一致性。对于大型项目,良好的...

    String.replaceAll方法详析(正则妙用)

    在Java编程语言中,`String.replaceAll`方法是一个非常强大的工具,尤其当结合正则表达式使用时,可以实现复杂的文本处理。本文将深入探讨`String.replaceAll`方法的使用及其背后的正则表达式分组概念。 首先,`...

    Java String.replace()方法"无效"的原因及解决方式

    Java String.replace()方法"无效"的原因及解决方式 Java String.replace()方法是一种常用...在使用Java String类型的replace和replaceAll方法时,我们需要注意它们的使用方法和返回值的机制,以避免出现"无效"的情况。

    java http 发送xml报文(java发送xml报文实例+参数)

    使用HttpURLConnection创建连接并设置请求方法为POST: ```java URL url = new URL("http://example.com/api"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection....

    文件内容替换与文件编码格式转换java源码

    4. **替换内容**:使用`String.replace()`或`String.replaceAll()`方法替换文本内容。 5. **写入新文件**:创建一个新的文件,使用`Files.write()`方法以UTF-8编码写入替换后的字符串。 在批量处理文件时,可以使用...

    Java正则表达式入门及用法

    ### Java正则表达式入门及用法 #### 一、正则表达式的概念与作用 在计算机科学领域,正则表达式(Regular Expression)是一种强大的文本处理工具,它由一系列字符和特殊符号组成,用于匹配字符串中的特定模式。...

    java正则表达式的概述及在JAVA中的使用方法.txt

    ### Java正则表达式的概述及在JAVA中的使用方法 #### 一、正则表达式简介 正则表达式(Regular Expression)是一种强大的文本处理工具,它由一系列字符和特殊符号组成,用于匹配字符串中特定的组合。在Java中,正则...

Global site tag (gtag.js) - Google Analytics