`
jiangzhenghua
  • 浏览: 602767 次
  • 性别: 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(..)


正则表达式,关于String.replaceALL(..)
2005-3-25 15:03:55
regex:

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(正则表达式)和 ...

    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中replace()和replaceAll()的区别

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

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

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

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

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

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

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

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

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

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

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

    Java正则表达式入门及用法

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

    java 替换指定的字符

    在Java中,我们可以使用`String`类提供的方法来实现这一功能。以下是一些主要的方法: 1. `replace(char oldChar, char newChar)`:这个方法用于在字符串中替换所有出现的旧字符(oldChar)为新字符(newChar)。...

    java获取文件创建时间

    这是因为Java标准库(JDK)在早期版本中并没有提供直接获取文件创建时间的方法。不过,从Java 7开始,通过NIO(New I/O)API可以实现这一功能。 #### 基本概念 1. **文件属性**:在计算机系统中,每个文件都有一个...

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

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

    Java面试要点(适用于2年以上经验,1年亦可)

    Java 是一种广泛使用的编程语言,涵盖了基础知识、JVM、并发、锁、分布式等领域。以下是Java面试要点的详细知识点总结: 基础篇 1. JVM 内存结构:堆、栈、方法区、直接内存、堆和栈区别 2. Java 内存模型:内存...

    java常用代码方法

    本主题将深入探讨“java常用代码方法”,重点关注ISBN(国际标准书号)的校验以及处理特殊符号的工具类。 一、ISBN校验 ISBN(International Standard Book Number)是全球图书的唯一标识符,通常包含10位或13位...

    Java正则表达式如何匹配特定html标签内的内容

    总结来说,虽然Java正则表达式能够提供一种简单快捷的方式来匹配特定的HTML标签内容,但在实际应用中,还是应当根据实际情况选择最适合的解析方法。对于简单的任务,正则表达式或许足够使用;而对于需要精确解析HTML...

    Java 中 过滤Html标签

    在Java中,过滤Html标签的方法有多种,包括使用正则表达式、使用HtmlParser等。下面我们将详细介绍使用正则表达式过滤Html标签的方法。 使用正则表达式过滤Html标签的关键是定义正确的正则表达式。正则表达式是一种...

Global site tag (gtag.js) - Google Analytics