2017-11-24 17 views
0

"is"와 같은 문자열이 계속되는 경우 문자열 내의 모든 문자를 소문자로 바꾸라는 요구 사항이 있습니다. 예를 들어java string 특정 문자열을 소문자로 바꾸는 첫 번째 문자

은 :

String a = "name=xyz,isSalaried=Y,address=abc,isManager=N,salary=1000"; 

내가이 정규 표현식에서 아주 좋은 아니에요

"name=xyz,salaried=Y,address=abc,manager=N,salary=1000" 

로 변환 얻을해야하지만 필요한 출력을 달성하는 데 사용할 수 있다고 생각합니다. 누군가 나를 도울 수 있다면 좋을 것입니다.

+2

자바 9. '는 Pattern.compile ("이다 ([AZ])") 매처 (a) .replaceAll (m -> m.group (1) .toLowerCase())' – shmosel

+0

@shmosel 그것은 좋은 답변입니다 - 답으로 게시해야합니다! – alfasin

+0

@Shmosel - 정확하고 정확한 해결책으로 보이지만 문제는 JDK 7에서 작업하고 있다는 것입니다. – Pallav

답변

0

귀하의 솔루션에는 java의 String 및 String 메소드에 대한 기본적인 이해가 필요합니다. 다음은 하나의 작동 예제입니다. 하지만, 가장 효율적인 방법은 아닙니다. 참고 : - 당신은 정규식을 요청 SOLUTION.BUT

public class CheckString{ 
    public static void main(String[] ar){ 
     String s = "name=xyz,isSalaried=Y,address=abc,isManager=N,salary=1000"; 
     String[] arr = s.split(","); 
     String ans = ""; 
     int i = 0; 
     for(String text : arr){ 
      int index = text.indexOf("="); 
      String before = text.substring(0,index).replace("is","").toLowerCase(); 
      String after = text.substring(index); 
      if(i!=(arr.length-1)){ 
       ans += before + after + ","; 
       i++; 
      } 
      else{ 
       ans += before + after; 
      } 
     } 
     System.out.println(ans); 
    } 
} 
0

이 시도 이건 PURE STRING의 방법을 사용하고 있습니다. 제 매치 문자열 및 루프 대체

String a = "name=xyz,isSalaried=Y,address=abc,isManager=N,salary=1000"; 

    Matcher matcher = Pattern.compile("is(.*?)=").matcher(a);//.matcher(a).replaceAll(m -> m.group(1).toLowerCase()); 

    while (matcher.find()) { 
     String matchedString = matcher.group(1); 

     a = a.replace("is"+matchedString,matchedString.toLowerCase()); 
    } 
    System.out.printf(a);