【问题标题】:How to do a case-insensitive string replacement如何进行不区分大小写的字符串替换
【发布时间】:2013-03-14 20:09:34
【问题描述】:

各位朋友,我正在创建一个应用程序。
我想在ArrayList 中找到一个特定的词,我必须替换
它用另一个词。我使用了下面的代码。它区分大小写,
但我想让它不区分大小写。

   FillintheBlank.class: 

          public class FillintheBlank extends Activity {
        static ArrayList<String> multiword=new ArrayList<String>();

 static ArrayList<String> multimeaning=new ArrayList<String>();


public void setNoTitle() {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
} 
 float screenHeight,screenWidth,screendensity;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     setNoTitle();
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
     DisplayMetrics displaymetrics = new DisplayMetrics();
     getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
     screenHeight = displaymetrics.heightPixels;
     screenWidth = displaymetrics.widthPixels;
     screendensity = displaymetrics.densityDpi;
    setContentView(R.layout.fillinblanknew);

             multiword.add("radha");
             multiword.add("RAdHA");
              multiword.add("latha");
                multiword.add("mammu");

              s.o.p(""+multiword);
            // output:radha,RADHA,latha,mamu

          multimeaning.add(multiword.getString().replace(radha,"sai"));
        s.o.p(""+multimeaning);
     // output: sai,RADHA,latha,mamu

 }
  } 

例如:无论 'radha' 中的字母是什么大小写,我都需要将 'radha' 替换为 'sai'。

【问题讨论】:

标签: java android android-emulator


【解决方案1】:

使用 apache commons lang3 - v3.5 或更高版本的 StringUtils(因此您不必担心正则表达式解析):

StringUtils.replaceIgnoreCase(text, searchString, replacement);

或:

StringUtils.replaceOnceIgnoreCase(text, searchString, replacement);

如果你使用maven,添加这个依赖(我使用的是3.6版本):

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.6</version>
</dependency>

【讨论】:

    【解决方案2】:

    你可以在字符串前面加上“(?i)”模式来忽略大小写。

    public class StringReplace {
    
        public static void main(String[] args) {
            System.out.println(replaceString("This is a FISH", "IS"));
        }
    
        public static String replaceString(String first, String second) {
              return first.replaceAll("(?i)"+ second, "");
        }
    }
    

    上面的代码将返回“Th a FH”。

    【讨论】:

      【解决方案3】:

      可以使用正则表达式。 只需在字符串之前添加 (?i) 即可忽略大小写。

      例如:

      multiword.getString().replaceAll("(?i)radha", "sai");

      【讨论】:

      • 你说得对,我不认为 replace 需要正则表达式,只有 replaceAll 和 replaceFirst
      【解决方案4】:

      您可以使用 String 类中的 equalsIgnoreCase(string) 方法来实现您的目的。

      【讨论】:

      • 是的,我试过了。请查看我的代码一次。首先我需要在arraylist中搜索那个字符串,然后我必须应用那个equlasignore case()但是在上面的代码中如何应用那个方法我没有任何想法
      • @TimothyP OP 想要不区分大小写的替换。不等于。如果我的投票错误,我将撤消它。但我认为答案并不正确。
      • 好吧,现在我想起来,他的回答作为评论可能会更好。你是对的
      猜你喜欢
      • 2021-05-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多