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