- 浏览: 1250216 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (461)
- 心得体会 (166)
- Hibernate (9)
- Spring (12)
- Struts1 (3)
- Ajax (4)
- Java (54)
- 其他技术 (21)
- 数据库 (29)
- EXT (0)
- Struts2 (7)
- Xml (3)
- HTML (5)
- JavaScript (12)
- 面试相关 (3)
- BLOG (11)
- 计算机 (11)
- PMP (0)
- OGNL (1)
- LINUX (79)
- AIX (1)
- Ubuntu (14)
- Android (1)
- hadoop (3)
- LINUX debian (3)
- 心得体会 eclipse (2)
- JSTL (1)
- 心得体会 hadoop cdh3u5 (2)
- maven (5)
- Hive (1)
- 心得体会 工具使用 (3)
- spring data jpa Query By Example(QBE) (1)
- nginx (2)
- Apache (1)
- mysql (6)
- LINUX mysql (2)
- freemaker (1)
- 心得体会 FastDFS Nginx 断点续传 (1)
- LINUX FastDFS Nginx 断点续传 (1)
- 心得体会 Mybatis (2)
- 心得体会 mysql (4)
- php (1)
- logback 简介 (5)
- EL (1)
- Tomcat (2)
- win7 (1)
- LINUX maven (1)
- scrumworks (1)
- linux nginx (6)
- svn linux (1)
- mac (3)
- mac git (1)
- git (1)
- nexus (2)
- golang (1)
- LINUX Redis (1)
- mac oracle (1)
最新评论
-
a785975139:
有用
MySQL Error :SHOW PROFILES -
yijiulove:
弄了半天,参照你的方法解决了.特来感谢,知道可能是先加载,但是 ...
Spring和Mybatis整合时无法读取properties的处理方案 -
chenjinqi1987:
Missing com.sun.jdmk:jmxtools:jar:1.2.1 -
leifeng2:
请问怎么使用,运行之后d盘符没有生产音频文件呢?
java录音程序 -
sundful:
chenghong726 写道你好,我也遇到你这样的问题,按照 ...
Spring和Mybatis整合时无法读取properties的处理方案
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就做不到,因为它不是基于规则表达多的替换。
评论
7 楼
best_programmer
2014-05-09
"(^|\\.)(\\d)(\\.|$)"
想问下,这个正则表达式是如何匹配111.3.22.11的啊,看了半天还是没明白
想问下,这个正则表达式是如何匹配111.3.22.11的啊,看了半天还是没明白
6 楼
skcmm
2014-04-04
看了博主的文章,受了启发。
刚开始我的代码是这样的:
bean.getFilePath().replaceAll("\\\\", File.separator).replaceAll("/",File.separator));
在linux下运行正常,但在windows下却报stringindexoutofrange
如果要在多平台下兼容 应该这样写
bean.getFilePath().replaceAll("\\\\", "\\" + File.separator).replaceAll("/", "\\" + File.separator));
因为这个bug调试了一会,没仔细看jdk说明,以为只有源字符是正则匹配的,目标字符也是采用正则的。
刚开始我的代码是这样的:
bean.getFilePath().replaceAll("\\\\", File.separator).replaceAll("/",File.separator));
在linux下运行正常,但在windows下却报stringindexoutofrange
如果要在多平台下兼容 应该这样写
bean.getFilePath().replaceAll("\\\\", "\\" + File.separator).replaceAll("/", "\\" + File.separator));
因为这个bug调试了一会,没仔细看jdk说明,以为只有源字符是正则匹配的,目标字符也是采用正则的。
5 楼
Mr-su
2014-03-14
Mr-su 写道
yangjianzhouctgu 写道
String s = 'E:\\jbx\\x9\\io9';
能这么声明吗?
能吧
不能这样吧:String s = 'E:\jbx\x9\io9';
4 楼
Mr-su
2014-03-14
yangjianzhouctgu 写道
String s = 'E:\\jbx\\x9\\io9';
能这么声明吗?
能吧
3 楼
ruijin5566
2013-08-19
yangjianzhouctgu 写道
String s = 'E:\\jbx\\x9\\io9';
能这么声明吗?
String s = "E:\\jbx\\x9\\io9"; 这样就可以了
2 楼
yangjianzhouctgu
2013-05-31
换言之,假设String.replaceAll()是以普通字符串,而不是regex作为参数,那么这样写代码: String target = source.replaceAll('\\', '\\\\'); 就可以了。
这个说法好像也有问题
1 楼
yangjianzhouctgu
2013-05-31
String s = 'E:\\jbx\\x9\\io9';
能这么声明吗?
发表评论
-
Java数字、货币值和百分数等的格式化处理
2016-09-13 18:36 967如果我们用下列语句输出一个数 System.out.pri ... -
jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令
2016-08-17 09:01 1158公司内部同事分享的一篇文章 周末看到一个用jstack查看死锁 ... -
jstat查看jvm的GC情况[转]
2016-08-17 08:58 792jps(Java Virtual Machine Proce ... -
Java 7, Ubuntu 12.10 64bit issues
2015-04-13 11:57 1373At first Maven failed with the ... -
Map遍历的两种方式
2014-10-20 11:09 916第一种: Map map = new HashMap() ... -
对Map按key和value分别排序
2014-10-20 11:01 955一.理论准备 Map是键值对的集合接口, ... -
【转】程序包com.sun.image.codec.jpeg不存在 问题的完美解决
2014-10-09 13:43 1286maven下面编译失败,失败提示信息为:程序包com.sun ... -
关于系统读取properties配置文件的路径问题,包括打成jar包的运行文件
2014-10-08 18:05 1828在当前的一个项目中, ... -
java中的equals和hashCode(转载)
2014-01-15 14:01 871在某些时候,我们需要判断两个对象是否相等。Java的每个类都继 ... -
关于java中BufferedReader的read()及readLine()方法的使用注意
2013-06-05 16:08 2635以前学习的时候也没有太在意,在项目中使用到了才发现呵呵 1 ... -
java -cp
2013-04-19 12:03 1464java -cp classpath Specify a ... -
maven 打包可执行jar的方法
2013-04-19 12:02 48861.修改pom.xml增加如下内容 [html] ... -
Java 反射测试
2010-08-10 16:54 1305import java.lang.reflect.Invoca ... -
Creating Dynamic Web Project using Maven in Eclipse
2010-08-10 13:10 2863While using Maven as build tool ... -
建立你自己的本地仓库(Maven仓库管理-Nexus)
2010-07-02 13:34 4100这一个章节,我分两部分来介绍,首先介绍一下Maven的仓库,然 ... -
Java枚举类
2010-04-13 11:30 68121.创建一个最简单的枚 ... -
Java堆.栈和常量池 笔记
2010-04-07 09:26 12281.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程 ... -
探讨代理模式与Java反射机制的应用
2010-04-01 09:53 1087代理模式,相信大多数人都非常熟悉,常见的实现方式是通过公共接 ... -
Java的代理模式(通过公共接口实现)
2010-04-01 09:51 1234代理模式的一种常见的实现方案是,定义一个接口或抽象类,并派生出 ... -
Java多线程编程要点
2010-03-31 09:30 11111、 认识Thread和Runnable Java中实现 ...
相关推荐
Java中的`replace`、`replaceAll`和`replaceFirst`是字符串操作中常见的方法,用于替换字符串中的特定子串。它们都是`String`类的方法,但各自有不同的行为和用途。 1. `replace(CharSequence target, CharSequence...
在Java编程中,`replaceAll()`方法是用于字符串替换的一个强大工具,它接受两个参数:一个正则表达式作为第一个参数,以及一个替换字符串作为第二个参数。然而,如果使用不当,可能会遇到`Illegal group reference`...
而 Java 中的 replaceAll 方法则不同,replaceAll(String regex, String replacement) 方法使用给定的 replacement 替换字符串中所有匹配给定的正则表达式的子字符串。这个方法的参数是 regex(正则表达式)和 ...
第三种方法尤其有用,因为它可以直接调用,语法上与Java或其他一些语言的replaceAll方法一致,提高了代码的可读性和易用性。 此外,文中还提到了两个JavaScript正则表达式工具网站,提供了在线测试和在线生成正则...
replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是: 1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也是字符串); 2)...
Java中转义字符反斜杠的代替方法及repalceAll内涵解析 ...Java中转义字符反斜杠的代替方法需要根据不同的情况选择合适的方法,例如使用StringEscapeUtils工具类或replaceAll方法,以便正确地处理字符串转义问题。
然而,这种方法存在一个缺点,即无论何时数据被访问或序列化,都会使用脱敏后的数据,这可能并不总是理想的。 2. **利用日志组件过滤**: 另一个方法是通过日志框架(如Log4j或SLF4J)设置过滤器,匹配并替换特定...
与 `replace()` 不同,`replaceAll()` 方法使用正则表达式作为其第一个参数,这使得它具有更强大的功能。它可以执行基于规则的替换,例如替换所有数字为星号: ```java src.replaceAll("\\d", "*"); // 输出:ab**f...
在Java中,去除空格可以使用trim()、replace()、replaceAll()等方法。 1. 使用trim()方法去除首尾空格 trim()方法可以去除字符串的首尾空格,但是不能去除中间的空格。例如: ```java String str = " hello world ...
在Java编程语言中,`String.replaceAll`方法是一个非常强大的工具,尤其当结合正则表达式使用时,可以实现复杂的文本处理。本文将深入探讨`String.replaceAll`方法的使用及其背后的正则表达式分组概念。 首先,`...
### Java正则表达式的概述及在JAVA中的使用方法 #### 一、正则表达式简介 正则表达式(Regular Expression)是一种强大的文本处理工具,它由一系列字符和特殊符号组成,用于匹配字符串中特定的组合。在Java中,正则...
### Java正则表达式入门及用法 #### 一、正则表达式的概念与作用 在计算机科学领域,正则表达式(Regular Expression)是一种强大的文本处理工具,它由一系列字符和特殊符号组成,用于匹配字符串中的特定模式。...
在Java中,我们可以使用`String`类提供的方法来实现这一功能。以下是一些主要的方法: 1. `replace(char oldChar, char newChar)`:这个方法用于在字符串中替换所有出现的旧字符(oldChar)为新字符(newChar)。...
这是因为Java标准库(JDK)在早期版本中并没有提供直接获取文件创建时间的方法。不过,从Java 7开始,通过NIO(New I/O)API可以实现这一功能。 #### 基本概念 1. **文件属性**:在计算机系统中,每个文件都有一个...
使用HttpURLConnection创建连接并设置请求方法为POST: ```java URL url = new URL("http://example.com/api"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection....
Java 是一种广泛使用的编程语言,涵盖了基础知识、JVM、并发、锁、分布式等领域。以下是Java面试要点的详细知识点总结: 基础篇 1. JVM 内存结构:堆、栈、方法区、直接内存、堆和栈区别 2. Java 内存模型:内存...
本主题将深入探讨“java常用代码方法”,重点关注ISBN(国际标准书号)的校验以及处理特殊符号的工具类。 一、ISBN校验 ISBN(International Standard Book Number)是全球图书的唯一标识符,通常包含10位或13位...
总结来说,虽然Java正则表达式能够提供一种简单快捷的方式来匹配特定的HTML标签内容,但在实际应用中,还是应当根据实际情况选择最适合的解析方法。对于简单的任务,正则表达式或许足够使用;而对于需要精确解析HTML...
在Java中,过滤Html标签的方法有多种,包括使用正则表达式、使用HtmlParser等。下面我们将详细介绍使用正则表达式过滤Html标签的方法。 使用正则表达式过滤Html标签的关键是定义正确的正则表达式。正则表达式是一种...
此外,正则表达式还可以用于字符串的替换,Matcher的replaceAll和replaceFirst方法可以将匹配到的部分替换为新的字符串: ```java String result = matcher.replaceAll("X"); ``` 在Java中,正则表达式的性能优化...