簡體   English   中英

如何在Java中使用替換函數以區分大小寫的字符值

[英]how to use replace function in java for case insensitive character value

我正在編寫一個Java程序,其中用戶輸入一系列單詞,該單詞將句子中的每個“ p”更改為“ b”(不區分大小寫)並顯示輸出。

我嘗試使用替換功能,但不區分大小寫

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

我期望產出的boliticians bromised ,但是實際產出是Politicians bromised

replace僅區分大小寫。

沒有“簡單”的方法可以執行此操作:您可以進行兩次替換,但這構成了一個中間字符串。

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

如果您想編寫一種方法來對非硬編碼字母執行此操作,則可以執行以下操作:

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

您可以使用正則表達式進行操作,請參閱問答- 如何在Java中替換不區分大小寫的文字子字符串,也可以對p和P兩次使用replace

您可以改用replaceAll以便使用正則表達式:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM