2013-03-25 54 views
5

嗨朋友我正在创建一个应用程序。
我想找到在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 

} 
    } 

例如:我需要“世”无论什么字母的“拉达”的情况是,以取代“拉达”。

+0

http:// jelaniharri s.com/2009/case-insensitive-replaceall-in-java/ – 2013-03-25 11:05:47

+0

而在计算器上另一个例子:http://stackoverflow.com/questions/5054995/how-to-replace-case-insensitive-literal-substrings-in -java – TimothyP 2013-03-25 11:11:47

+0

这是你的实际工作代码吗?你如何做一个ArrayList的getString()? – 2013-03-25 11:21:02

回答

9

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

因此,例如:

multiword.getString()的replaceAll( “?(ⅰ)茹”, “西”);

+0

索里它不工作 – radha 2013-03-25 11:13:42

+0

thankyou.ur代码也工作,但只是把的replaceAll().. – radha 2013-03-25 11:22:36

+2

你说得对,我不认为需要更换一个正则表达式,只有的replaceAll和replaceFirst – 2013-03-25 11:24:25

-3

你可以使用String类找到了适合自己的目的equalsIgnoreCase(string)方法。

+0

是的,我try.please看到我的代码一次。首先我需要数组列表中搜索该字符串是存在的或以后我就申请上面的代码如何应用这个方法我没有得到任何想法,equlasignore情况下()战利品 – radha 2013-03-25 11:05:48

+0

有没有理由downvote这个答案... – TimothyP 2013-03-25 11:06:47

+1

@TimothyP OP希望不敏感的情况下更换。不等于。如果我在错误投票中错了,我会撤消它。但我认为答案是不正确的。 – 2013-03-25 11:09:20

1

您可以在字符串前面设置“(?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”。

0

使用由阿帕奇百科全书lang3 StringUtils的 - V3.5或更高版本(所以你不必担心正则表达式解析):

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> 
相关问题