字符串:.replaceAll和.Substring:实际示例解释?

时间:2014-05-01 20:25:33

标签: java string substring replaceall

以下两种方法实际上发生了哪些步骤?我粗略地了解了这些方法的用途,但我不知道如何做。

方法1:

public String processDiscardedLetters(String name) {
        return name.substring(0, 1)
                + name.substring(1).replaceAll("[aeihouwy]", "");
    }

方法2:

public String processEquivalentLetters(String name) {
        name = name.replaceAll("[aeiou]", "a");
        name = name.replaceAll("[cgjkqsxyz]", "c");
        name = name.replaceAll("[bfpvw]", "b");
        name = name.replaceAll("[dt]", "d");
        name = name.replaceAll("[mn]", "m");
        return name;
    }

5 个答案:

答案 0 :(得分:0)

这两个示例都使用regular expressions来转换输入。

括号语法[]是一个字符类,这意味着其中的任何字符都将与输入的一部分匹配。

特别是,使用[aeihouwy]替换字符串将替换所有出现的替换字符串。

方法1 :保留第一个字母,无论它是什么,并删除字符串其余部分中出现的所有字符aeihouwy

更具体地说,方法1正在执行以下步骤。

  1. 将原始字符串分成两部分:第一个字符和字符串的其余部分。这使用带有参数subString0的{​​{1}}方法来提取第一个字符,使用参数1来提取从第二个字符开始并结束的字符串部分在字符串的末尾。
  2. 使用1消除字符串后半部分中的任何字符replaceAll
  3. 再次加入字符串。
  4. 方法2 :第一个例子

    aeihouwy

答案 1 :(得分:0)

String的substring(startIndex, endIndex)方法实际上从字符串数组的起始索引(包括)到结束索引(不包括)获取字符串(字符串是CharSequence,这是一个“字符串数组”) 。如您所知,数组计数从0开始到N-1。substring(startIndex)需要一个从index开始到字符串结尾的字符串。

replaceAll(String regularExpression, String replacement)方法将根据匹配的regular expression条件替换字符串。如果字符串的一部分与正则表达式条件匹配,则它将替换为替换字符串。

[]中的正则表达式称为character classes。这些告诉正则表达式引擎只匹配这些字符中的1个。因此,如果您有[aeihouwy],则grey之类的字词会匹配,因为它标识了gr [ey]和gr [e] y以及gre [y]。因此,任何提到的单词都将替换为空白字符串""

我希望这会有所帮助。

答案 2 :(得分:0)

Example 1:
input: here are my
output: hr r m //replaced with '' (nothing)

Example 2 (first line):
input: cake is king xoxo
output: aaka as kang xoxo // replaced with 'a'

正如您所看到的,[]中的字符将替换为您编写为第二个参数的字符。

答案 3 :(得分:0)

阅读是基础。

This link是魔法! 它包含您问题的所有答案。 以下是Bonus Magic以及#34;滚动,如此困难"。

答案 4 :(得分:0)