class Solution {
public String solution(String new_id) {
String answer = regexRefined(new_id);
return answer;
}
/**
정규 표현식 사용하지 않고 규칙을 구현
*/
public String refinedData(String data){
StringBuilder sb = new StringBuilder();
// stage 1
data = data.toLowerCase();
// stage 2
for(int i=0; i<data.length(); i++){
char cur = data.charAt(i);
if((cur>='a' && cur<='z') || (cur>='0' && cur<='9') || cur == '-' || cur == '_' || cur=='.' ){
sb.append(cur);
}
}
data = sb.toString();
sb.setLength(0); // StringBuilder 초기화
// stage 3
while(data.contains("..")){
data = data.replace("..",".");
}
// stage 4
if(data.length()>0){
if(data.charAt(0) == '.'){
data = data.substring(1);
}
}
if(data.length()>0){
if(data.charAt(data.length()-1) == '.')
{data = data.substring(0, data.length()-1);}
}
// stage 5
if(data.equals("")){
data = "a";
}
// stage 6
if(data.length()>15){
data = data.substring(0,15);
if(data.charAt(data.length()-1) == '.'){
data = data.substring(0,data.length()-1);
}
}
// stage 7
sb = new StringBuilder(data);
while(sb.length()<3){
sb.append(data.charAt(data.length()-1));
}
data = sb.toString();
return data;
// StringBuilder reinitializing = sb.setLength(0);
}
/**
정규 표현식을 이용하여 문자열 구현
*/
public String regexRefined(String data){
StringBuilder sb = new StringBuilder();
// stage 1
data = data.toLowerCase();
// stage 2
data = data.replaceAll("[^-_.a-z0-9]","");
// stage 3
data = data.replaceAll("[.]{2,}",".");
// stage 4
data = data.replaceAll("^[.]|[.]$", "");
// stage 5
if(data.equals("")){
data+="a";
}
// stage 6
if(data.length()>15){
data = data.substring(0,15);
if(data.charAt(data.length()-1) == '.'){
data = data.substring(0,data.length()-1);
}
}
//stage 7
sb.append(data);
while(sb.length()<3){
sb.append(data.charAt(data.length()-1));
}
data = sb.toString();
return data;
}
}
String.replace("target","원하는 값");
String.substring(int startIdx, int endIdx);
sb.replaceAll("정규 표현식","원하는 값");
class Solution {
public String solution(String new_id) {
// step 1
String answer = new_id.toLowerCase();
// step 2
answer = answer.replaceAll("[^a-z0-9-_.]","");
// step 3
answer = answer.replaceAll("[.]{2,}",".");
// step 4
answer = answer.replaceAll("^[.]|[.]$","");
//step 5
if(answer.equals("")) answer = "a";
//step 6
if(answer.length()>=16) answer = answer.substring(0,15);
answer = answer.replaceAll("[.]$","");
// step 7
while(answer.length()<=2){
answer += answer.charAt(answer.length()-1);
}
System.out.println(answer);
return answer;
}
}
String.replaceAll(a,b)에서 a에 정규표현식 가능하다.