2013-03-25 4 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/ –

+0

및 StackOverflow에 대한 또 다른 예 : http://stackoverflow.com/questions/5054995/how-to-replace-case-insensitive-literal-substrings-in -java – TimothyP

+0

이것이 실제 작업 코드입니까? ArrayList에 대해 getString()을 어떻게 수행하고 있습니까? –

답변

9

정규 표현식을 사용할 수 있습니다. 대소 문자를 무시하기 위해 문자열 앞에 (? i)를 추가하십시오. . 그래서 예를 들면

:

multiword.getString() 완전히 대체 (? "(I) 라드 ','SAI ');

+0

sory 그것의 작동하지 않는다 – radha

+0

thankyou.ur 코드도 작동하지만 그냥 replaceall()을 넣어 ... – radha

+2

당신이 맞아, 대체 생각하지 않는 정규 표현식, replaceAll과 replaceFirst –

-3

String 클래스에있는 equalsIgnoreCase(string) 메서드를 사용할 수 있습니다.

+0

예, 시도했습니다. 내 코드를 한번 봅니다. 먼저 arraylist에서 문자열이 있는지 검색해야합니다. 그런 다음 equlasignore case()를 코드 위에 적용해야합니다. 그 방법을 적용하는 방법을 알지 못했습니다. – radha

+0

이 대답을 downvote 할 이유가 없었습니다 ... – TimothyP

+1

@TimothyP OP는 대소 문자를 구분하지 않습니다. 같지 않음. 내가 downvoting에 잘못되면, 나는 그것을 취소합니다. 그러나 나는 그 대답이 적절하지 않다고 생각한다. –

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을 사용하고 있습니다) :

관련 문제