2017-11-24 34 views
0

"is"のような文字列が続く場合、文字列内のすべての文字を小文字に置き換える必要があります。例えばJava文字列replaceall最初の文字を特定の文字列の後に小文字に変換する

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メソッドの基本的な理解が必要です。 ここに1つの実例があります。しかし、それは最も効率的なものではないかもしれません。 注: - YOUはREGEXを求め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); 
関連する問題