ReplaceAll()和Replace的实战用法

关于转义:

\  ==> \\

\\==>\\\\

"==>\"

\"==>\\\"(拆分为\\+\")

区别:
1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);
2)replaceAll的参数是regex,即基于正则表达式的替换,比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号;
相同点:
都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串,如果只想替换第一次出现的,可以使用replaceFirst(),这个方法也是基于规则表达式的替换,但与replaceAll()不同的是,只替换第一次出现的字符串;
另外,如果replaceAll()和replaceFirst()所用的参数据不是基于规则表达式的,则与replace()替换字符串的效果是一样的,即这两者也支持字符串的操作;

替换第一次出现的,可以使用 replaceFirst()

读取文件,将字符串的"\n"替换成空串,java先引入io

<!--加入对commons-io的依赖-->
<dependency>
	<groupId>commons-io</groupId>
	<artifactId>commons-io</artifactId>
	<version>2.4</version>
</dependency>

直接方法解析:

//传入字符串,解析成字符串集合
    public static String getArrayData(String str)throws IOException{
        String json=null;
        String ss=null;
        if(!str.isEmpty()){
            try {
                //io读取文件,转换成字符串
                File file = new File("F:\2018-11-10\old\bidui\20170102143829.txt");
                String content = FileUtils.readFileToString(file);
                JSONObject js=new JSONObject(content);
                json=js.getString("data");
                //将\n替换成一个空串
                ss=json.replaceAll("\n","");
            }catch (Exception e){

            }
        }
        return ss;
    }

小知识梳理一下:

 \\ 反斜杠 
\t 间隔 ('\u0009')
\n 换行 ('\u000A')
\r 回车 ('\u000D')
\d 数字 等价于 [0-9]
\D 非数字 等价于 [^0-9]
\s 空白符号 [\t\n\x0B\f\r]
\S 非空白符号 [^\t\n\x0B\f\r]
\w 单独字符 [a-zA-Z_0-9]
\W 非单独字符 [^a-zA-Z_0-9]
\f 换页符 
\e Escape
\b 一个单词的边界 
\B 一个非单词的边界 
\G 前一个匹配的结束 

用"\\*" "\\+"转义后即可得到正确的结果。

“.”和“|”都是转义字符必须得加"\\";要么就直接报异常了。

 

 

 

 

通过源码分析,我们可以得出以下结论: 1. `String.replace()` 和 `String.replaceAll()` 调用的方法是一样的,都是 `Matcher.replaceAll()` 方法。 2. `replaceAll()` 方法没有传入参数 `Pattern.LITERAL`。 根据源码的定义,我们可以进一步了解这两个方法的区别: 1. `replace(CharSequence target, CharSequence replacement)` 方法是用指定的文字替换序列替换与文字目标序列匹配的字符串的每个子字符串。 2. `replaceAll(String regex, String replacement)` 方法是将与给定正则表达式匹配的字符串的每个子字符串替换为给定的替换。 综上所述,我们可以总结如下: 1. `replace()` 和 `replaceAll()` 都是用于替换字符串的常用方法。 2. 两者都是全部替换,可以将源字符串中的某一字符或字符串全部替换为指定的字符或字符串。 3. 如果只想替换第一次出现的字符串,可以使用 `replaceFirst()` 方法。 4. `replaceAll()` 和 `replaceFirst()` 方法都基于规则表达式进行替换,但不同之处在于,`replaceFirst()` 只替换第一次出现的字符串。 5. `replaceAll()` 和 `replaceFirst()` 方法所使用的替换参数可以是普通字符串,也可以是正则表达式。 6. 如果 `replaceAll()` 和 `replaceFirst()` 方法所使用的参数不是基于规则表达式的,那么它们的效果和效率与 `replace()` 替换字符串的方法相同。 所以,`replaceAll()` 和 `replace()` 方法的主要区别在于是否基于正则表达式进行匹配和替换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值