string.replace(ch,“\0”)和string.replace(“+ch,”)之间有什么区别

q43xntqr  于 2021-07-09  发布在  Java
关注(0)|答案(4)|浏览(266)
class pola {
    public static void main(String[] args) {
        String name = "fast and furious";
        char s = 'f';
        System.out.println(name.replace(s, '\0'));    //---->line 1
        System.out.println(name.replace("" + s, "")); //---->line 2
    }
}

这两条线有什么区别 1 以及 2 ?

2hh7jdfx

2hh7jdfx1#

如果打印每个的char数组,您可以更清楚地看到 f 字符被删除,而在第二个字符被替换为 \0 :

Arrays.toString(name.replace("" + s, "").toCharArray())
=> "[a, s, t,  , a, n, d,  , u, r, i, o, u, s]"

Arrays.toString(name.replace(s, '\0').toCharArray())
=>"[\000, a, s, t,  , a, n, d,  , \000, u, r, i, o, u, s]"
lf3rwulv

lf3rwulv2#

这个 null character仍然是一个字符,空字符串不包含任何字符—简而言之,这就是区别。

hfsqlsce

hfsqlsce3#

每当您对api设计/细节有疑问时,javadocs几乎总是最好的开始。 replace​(char oldChar, char newChar) 返回用newchar替换此字符串中所有oldchar的结果。
replace​(CharSequence target, CharSequence replacement) 用指定的文字替换序列替换此字符串中与文字目标序列匹配的每个子字符串。替换从字符串的开头一直进行到结尾,例如,将字符串“aaa”中的“aa”替换为“b”将导致“ba”而不是“ab”。

abithluo

abithluo4#

第一个电话 replace(char, char) 第二个电话 replace(CharSequence, CharSequence) .
这两种方法的一大区别是,第一种方法只能进行1对1的替换 char 值(即一个字符的每次出现都被另一个字符替换),而第二个字符可以用另一个任意长的字符串替换任意长的字符串。
就你而言:
第一个调用将替换每个 f 带有nul字符 \0 ,有效地用不可打印的字符替换每个字符。
第二个调用替换每个1个字符的字符串 "f" 使用0字符 "" ,有效地删除所有 f 角色。

相关问题