文档章节

Java replace 和 replaceAll

Endeavour
 Endeavour
发布于 2015/08/20 10:50
字数 353
阅读 293
收藏 4

    Java String 的replace 和replaceAll 都是用来替换srcString的subString,但是有些不同的是,replace的参数是字符或者字符串,而replaceAll的参数可以是正则表达式。

public String replace (Char old,Char newChar) {
    (oldChar != newChar) {
        len = .i = -[] val = (++i < len) {
            (val[i] == oldChar) {
                }
        }
        (i < len) {
            buf[] = [len](j = j < ij++) {
                buf[j] = val[j]}
            (i < len) {
                c = val[i]buf[i] = (c == oldChar) ? newChar : ci++}
            String(buf)}
    }
    }

    从源码中可以看出可以替换字符,当字符串中存在oldChar则替换所有的oldChar为newChar,并返回一个新字符串,原字符串不改变。如果不存在则返回原字符串的引用。

public String replace(CharSequence target,CharSequence replacement) {
    Pattern.(target.toString()Pattern.).matcher(
            ).replaceAll(Matcher.(replacement.toString()))}

   replace 替换字符串时,是从字符串的开始往后匹配。例如: 替换"aa"为“b”,则“aaa”.repalce("aa","b") 返回的是"ba",而不是"ab"。这里可以看到,内部使用的replaceAll方法。当target或者replacement为null时,会报NullPointerException。这里依然是返回的是一个新字符串,原字符串不变(字符串的操作几乎都是不改变原字符串,有一个例外,但是忘了)。

  

public String replaceAll(String regex,String replacement) {
    Pattern.(regex).matcher().replaceAll(replacement)}

  replaceAll替换的字符串,通过匹配正则表达式(注意转义字符'\'和‘$’,在字符串中的影响),当然给定的字符串也是正则表达式的一种,返回的依然是新的字符串。

© 著作权归作者所有

Endeavour
粉丝 1
博文 12
码字总数 1540
作品 0
宝山
私信 提问
java string 字符串替换

i、replace方法 该方法的作用是替换字符串中所有指定的字符,然后生成一个新的字符串。经过该方法调用以后,原来的字符串不发生改变。例如: String s = “abcat”; String s1 = s.replace(...

如风达
2015/07/08
24.4K
1
Java中应该注意的一些特殊字符

replace ,replaceAll 两者都是由正则表达式类库实现的,但是 replace 采用的是字符串原有的意思来替换,而replaceAll 则是按照正则表达式的字符串来替换,正则表达式中有 15 个元字符,是有特...

天天顺利
2015/05/05
38
0
Java 字符串替换String.replaceAll需注意

Java中String.replace()和String.replaceAll()实现逻辑是不一样的。 replace是基于字符的替换,只替换第一个 replaceAll是基于正则表达式的替换,会替换所有满足条件的字符串 $表示以什么结尾...

boonya
05/15
16
0
javascript中的replaceAll

js的String有一个replace方法,只能对str进行一次替换,假如你的str里有多个相同的需要替换的oldStr,它只能替换第一个,这时候就需要一个类似JAVA中的replaceAll的方法。这里提供一个自己封...

greenpig
2012/05/30
390
2
replace File.separator出现异常:【java.lang.IllegalArgumentException: character to be escaped is missing】

写代码时,要写这么一个功能:将包名中的"."换成路径分隔符("/"或"",视操作系统而定),要求在window或linux下都能正常运行。 分析一下,这明显是个字符串替换的操作,可用使用String提供的...

Funcy1122
01/24
238
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 如果是个帅小伙你愿意和他出去吗

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《Ghost 》游戏《死亡搁浅》原声 《Ghost 》游戏(《死亡搁浅》原声) - Au/Ra / Alan Walker 手机党少年们想听歌,请使劲儿戳...

小小编辑
57分钟前
107
5
java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
16
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部