2017-02-07 5 views
1

Я хочуКак скрыть скобки скобок в скобках, используя метод замены java replaceAll (regex, replacement)?

ASDFASDFG => A******** 
(qwe)rtya(sdfg)h => (qwe)rtya(s***)h 

так я пытался

public String setMask_ (String name_){ 

    String result = null; 

    if(name_.lastIndexOf("(") > -1) { 
     // Bracket Begin 
     int locBrkBgn = name_.lastIndexOf("(") +2; 
     // Bracket End 
     int locBrkEnd = locBrkBgn + (name_.substring(locBrkBgn, name_.length())).indexOf(")") -1; 
     // result = name_.replaceAll("(?<=.{"+locBrkBgn+"}).*(?={"+locBrkEnd+"})", "*"); 
     result = name_.replaceAll("(?<=\\().*?(?=\\))", "*"); 
    } else { 
     result = name_.replaceAll("(?<=.{1}).", "*"); 
    } 
    return result; 
} 

ответ

0

результат = name_.replaceAll ("\ (\ ш + \) \ ш * $", "(" + name_.replaceAll ("\ (\ w \) \ w * \ (\ w * \)", ")"));

В основном, вы заменяете деталь внутри второй скобки на *, а затем заменяете все до последней закрывающей круглой скобки закрытой скобкой.

1

О, я думаю, я сделал это.

public String setMask_ (String name_){ 

    String result = null; 

    if(name_.lastIndexOf("(") > -1) { 
     // locate. Bracket Begin 
     int locBrkBgn = name_.lastIndexOf("(") +2; 
     result = name_.replaceAll("(?<=.{"+locBrkBgn+"}).(?=[^\\)]*?\\))", "*"); 
    } else { 
     result = name_.replaceAll("(?<=.{1}).", "*"); 
    } 
    return result; 
}