2013-03-25 10 views
5

Cześć przyjaciele Tworzę aplikację.
Chcę znaleźć konkretne słowo w numerze ArrayList i muszę zastąpić
innym słowem. Użyłem kodu poniżej. Działa rozróżnianie wielkości liter,
, ale chciałbym, aby było to niewrażliwe na wielkość liter.Jak wykonać rozróżnianie wielkości znaków niewymiarowych

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 

} 
    } 

Na przykład: muszę wymienić „Radha” z „sai” bez względu na to, co w przypadku liter w „Radha” są.

+0

http: // jelaniharri s.com/2009/case-insensitive-replaceall-in-java/ –

+0

I kolejny przykład na StackOverflow: http://stackoverflow.com/questions/5054995/how-to-replace-case-insensitive-literal-substrings-in -java – TimothyP

+0

Czy to rzeczywiście działa kod? Jak robisz getString() na ArrayList? –

Odpowiedz

9

Można użyć wyrażeń regularnych. Po prostu dodaj (? I) przed ciągiem, aby zignorować wielkość liter. .

Tak na przykład:

multiword.getString() replaceAll (? "(I) Radha", "sai");

+0

sory jej nie działa – radha

+0

dziękuję kod działa również, ale po prostu put replaceall() .. – radha

+2

Masz rację, nie myślę, że replace ma regex, tylko replaceAll i replaceFirst –

-3

Możesz użyć metody equalsIgnoreCase(string) znalezionej w klasie String dla swojego celu.

+0

tak próbowałem. Proszę zobaczyć mój kod raz. Najpierw muszę przeszukać listę tablicową, która zawiera ciąg znaków, albo muszę zastosować equlasignore case(), ale w powyższym kodzie, jak zastosować tę metodę. Nie uzyskałem żadnego pomysłu. – radha

+0

Nie było powodu, aby potwierdzać tę odpowiedź ... – TimothyP

+1

@TymothyP OP chce niewymiennego przypadku zastąpić. Nie równa się. Jeśli się nie mylę, cofnę to. Ale myślę, że odpowiedź nie jest właściwa. –

1

Możesz "(? I)" wzór przed ciągiem, aby zignorować przypadku.

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

Powyższy kod zwróci "Th a FH".

0

Stosować StringUtils przez Apache Commons lang3 - v3.5 lub później (więc nie trzeba się martwić o regularnym parsowania wyrażenie):

StringUtils.replaceIgnoreCase(text, searchString, replacement); 

lub:

StringUtils.replaceOnceIgnoreCase(text, searchString, replacement); 

Jeśli używasz maven, dodaj tę zależność (używam wersji 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> 
Powiązane problemy