2013-03-25 57 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> 
相關問題