- 浏览: 600033 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (199)
- 纯java (22)
- 中间件 (1)
- java线程 (1)
- webwork (10)
- HTML/CSS (11)
- struts2 (10)
- mysql (14)
- Linux (8)
- 字符编码和转换 (1)
- WebService (1)
- web (21)
- javascript (33)
- ajax (5)
- 随便写写 (3)
- svn (0)
- eclipse使用技巧 (10)
- Ant (1)
- 互联网发展方向 (1)
- Jquery (12)
- 视频 (2)
- MD5 (1)
- 项目经验总结 (1)
- Oracle (2)
- Netbeans (1)
- Apache/Tomcat (4)
- springside (1)
- hibernate (6)
- SpringSecurity (0)
- java与文件 (1)
- CKEditor (4)
- JSON (3)
- 笔试题 (0)
- 应用部署 (1)
- 杂七杂八 (1)
- android (1)
- jQuery UI (1)
- XML相关技术 (1)
- HTML5 (1)
- CSS3 (0)
- 正则表达式 (1)
- http协议 (3)
- 算法 (5)
- 互联网知识 (1)
最新评论
-
hp321:
我现在遇到一个开发自定义按钮的问题,想请教下你:问题如下:举例 ...
Ckeditor 如何在源码模式下添加可以显现的按钮 -
make1828:
javascript跨域解决方案(一) -
huxianwen:
问题是, ckeditor编辑器在源码模式并不能插入任何代码呀 ...
Ckeditor 如何在源码模式下添加可以显现的按钮 -
nidonglin1986:
虽然解决了问题,但是原因说的不是很明白啊。中文跟HTML标志 ...
struts2的标签在JS中的使用 中文乱码 -
ldw1986hf123:
[*]
JVM工作原理
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就做不到,因为它不是基于规则表达多的替换。
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就做不到,因为它不是基于规则表达多的替换。
发表评论
-
什么是线程安全
2011-11-28 17:57 1123什么是线程安全? ... -
java中的hashcode
2011-11-28 11:03 927Java中有两类集合(Collection),一类是List, ... -
插入排序算法
2011-11-15 16:35 1090插入排序 Insertion Sort ... -
任意10进制的数,然后打印其2进制形式的时候里面包含多少个1
2011-11-15 15:36 1210具体做法有两种: 方法一: public class A{ ... -
交换两个数不使用第三方变量
2011-11-15 14:04 1515题目很简单:------------------------- ... -
Java 冒泡排序
2011-11-15 11:05 1163冒泡的思想精髓就是数组中相临的两个数依次相比较,如果左边的数小 ... -
Java运行时异常与普通异常的区别
2011-11-09 11:22 1644Throwable是所有Java程序中错误处理的父类,有两种资 ... -
Servlet生命周期与工作原理
2011-11-09 09:13 1102Servlet生命周期分为三个阶段: 1,初始化阶段 ... -
java 单例模式的好处
2011-11-08 17:59 1371java 单例模式的好处 ... -
JAVA工厂模式
2011-11-08 17:29 10951. 简单工厂模式 publci clas ... -
sleep和wait的区别
2011-11-14 16:45 11721、这两个方法来自不同的类分别是,sleep来自Thread类 ... -
String、StringBuffer与StringBuilder之间区别
2011-11-04 21:10 912最近学习到StringBuffer,心中有好些疑问,搜索了一些 ... -
HashMap和Hashtable的区别
2011-10-14 17:53 15111 HashMap不是线程安全的 ... -
遍历HashMap的两种方法及效率
2011-10-14 17:33 4986第一种: Map map = new HashMap(); I ... -
什么是@SuppressWarnings("unchecked")
2010-10-15 10:29 1424@SuppressWarnings 批注允许您 ... -
图片压缩程序实例
2010-08-05 10:08 1328项目中要使用到图片压缩程序,在网上找了一个稍加修改就可以使用了 ... -
修改jar文件中的配置文件
2010-04-13 10:52 3387可以使用两种方法对jar文件进行修改: 1.使用winRAR ... -
重定向请求的两种方式
2009-12-31 14:20 14161.在程序中如何重定向请求呢? 答:重定向请求有两种方式:1 ... -
JVM工作原理
2009-11-30 15:49 11012Java虚拟机Java虚拟机(Ja ... -
java工程最后一个文件夹最后一个文件错误
2009-07-27 13:56 1224今天再次遇到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标签的方法有多种,包括使用正则表达式、使用HtmlParser等。下面我们将详细介绍使用正则表达式过滤Html标签的方法。 使用正则表达式过滤Html标签的关键是定义正确的正则表达式。正则表达式是一种...
此外,正则表达式还可以用于字符串的替换,Matcher的replaceAll和replaceFirst方法可以将匹配到的部分替换为新的字符串: ```java String result = matcher.replaceAll("X"); ``` 在Java中,正则表达式的性能优化...
总结来说,虽然Java正则表达式能够提供一种简单快捷的方式来匹配特定的HTML标签内容,但在实际应用中,还是应当根据实际情况选择最适合的解析方法。对于简单的任务,正则表达式或许足够使用;而对于需要精确解析HTML...