如何在java中为不区分大小写的字符值使用replace函数

如何在java中为不区分大小写的字符值使用replace函数,java,Java,我正在编写一个java程序,其中用户输入一系列单词,将句子中的每个“p”改为“b”(不区分大小写),并显示输出 我尝试使用replace函数,但它不区分大小写 String result = s.replace('p', 'b'); 我希望输出boliticians溴化,但实际输出是溴化替换仅区分大小写 没有“简单”的方法可以做到这一点:可以进行两次替换,但这会构造一个中间字符串 String result = s.replace('p', 'b').replace('P', 'B'); 我

我正在编写一个java程序,其中用户输入一系列单词,将句子中的每个“p”改为“b”(不区分大小写),并显示输出

我尝试使用replace函数,但它不区分大小写

String result = s.replace('p', 'b');

我希望输出
boliticians溴化
,但实际输出是
溴化

替换
仅区分大小写

没有“简单”的方法可以做到这一点:可以进行两次替换,但这会构造一个中间字符串

String result = s.replace('p', 'b').replace('P', 'B');
我将通过迭代字符数组来实现这一点:

char[] cs = s.toCharArray();
for (int i = 0; i < cs.length; ++i) {
  switch (cs[i]) {
    case 'p': cs[i] = 'b'; break;
    case 'P': cs[i] = 'B'; break;
  }
}
String result = new String(cs);
char[]cs=s.toCharArray();
对于(int i=0;i
如果您想为非硬编码的字母编写一种方法,您可以这样做:

String method(String s, char from, char to) {
  char ucFrom = Character.toUpperCase(from);  // Careful with locale.
  char ucTo = Character.toUpperCase(to);

  char[] cs = s.toCharArray();
  for (int i = 0; i < cs.length; ++i) {
    if (cs[i] == from) { cs[i] = to; }
    else if (cs[i] == ucFrom) { cs[i] = ucTo; }
  }
  return new String(cs);
}
String方法(字符串s、char-from、char-to){
char ucFrom=Character.toUpperCase(from);//注意语言环境。
char-ucTo=Character.toUpperCase(to);
char[]cs=s.toCharArray();
对于(int i=0;i
您可以使用正则表达式来完成,请参见Q&A-
或者您可以对p和p使用两次replace

您可以使用
replaceAll
来代替,这样您就可以使用正则表达式:

String result = s.replaceAll("[pP]", "b");

p和p可以使用两次替换吗?