使用字符包装器代码替换字符串中的字母,并使用保留原始大小写的新字母

时间:2012-09-13 05:07:54

标签: java character

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

3 个答案:

答案 0 :(得分:1)

我认为有一个String类内置替换函数。

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

这样的事情?

答案 1 :(得分:0)

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

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

然后,您应该将用户输入转换为toReplace并替换带有字符,使用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);
    }
}

答案 2 :(得分:0)

你的问题不清楚(如何&#39; b&#39;&#39;在鲍勃 - &gt;汤姆?)。但是,要运行不区分大小写的替换,您应该执行以下操作:

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");