0

试图弄清楚如何根据用户输入使用字符换行来改变字符串。如果字符串是“Bob 喜欢建造建筑物”并且用户选择用 T/t 替换所有字母 B/b,我需要如何对其进行编码以获得“Tom 喜欢 tuild tuildings”?

4

3 回答 3

1

我认为有一个 String 类内置替换功能。

String text = "Bob loves to build building";
text = text.replace("B","T").replace("b","t");

像这样的东西?

于 2012-09-13T05:15:06.853 回答
0

一个简单的开始是了解String.replace(char, char)Java。

// This addresses the example you gave in your question.
str.replace('B', 'T').replace('b', 't');

然后,您应该将用户输入转换为 toReplace 和 replaceWith 字符,使用 ASCII 码找出大写/小写计数器部分,并为上述替换方法调用生成参数。

public class Main
{
    public static void main(String[] arg) throws JSONException
    {
        String str = "Bob loves to build building";
        Scanner scanner = new Scanner(System.in);
        char toReplace = scanner.nextLine().trim().charAt(0);
        char replaceWith = scanner.nextLine().trim().charAt(0);

        System.out.println(str.replace(getUpper(toReplace), getUpper(replaceWith)).replace(getLower(toReplace),
            getLower(replaceWith)));
    }

    private static char getUpper(char ch)
    {
        return (char) ((ch >= 'A' && ch <= 'Z') ? ch : ch - ('a' - 'A'));
    }

    private static char getLower(char ch)
    {
        return (char) ((ch >= 'A' && ch <= 'Z') ? ch + ('a' - 'A') : ch);
    }
}
于 2012-09-13T05:18:28.253 回答
0

您的问题不清楚(Bob -> Tom 中的“b”如何变成“m”?)。但是,要运行不区分大小写的替换,您应该执行以下操作:

String text ="Bob loves to build building";
String b = "b";

Pattern p = Pattern.compile(b, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(text);

String outText = m.replaceAll("T");
于 2012-09-13T05:24:46.697 回答