2014-09-17 4 views
0

Java 6을 사용하고 있습니다. Amazon AWS 라이브러리를 사용하여 동적으로 도메인을 생성합니다. 그러나, 하위 도메인에서 불법 문자를 제거 할 수있는 함수를 찾고 있어요. 예 : 내 기능하위 도메인에서 잘못된 문자를 제거하려면 어떻게해야합니까?

dave'ssite.mydomain.com 

를 만들려고한다면 나는 다른 잘못된 문자가 하위 도메인에 잠복 아포스트로피, 또는 무엇이든을 제거 할 일부 기능에 문자열 "dave'ssite"을 통과하고 싶습니다.

어떻게해야합니까? 보다 구체적인 질문은 불법 서브 도메인 문자가 무엇인지 어떻게 식별 할 수 있는가입니다.

답변

1

하위 도메인은 도메인과 동일하므로 허용되는 문자는 A-Z a-z 0-9 and - 일 가능성이 큽니다. Regex를 사용할 수 있습니다.

... 
String s = "dave's-site.mydomain.com"; 

//prints daves-sitemydomaincom 
System.out.println(s.replaceAll("[^A-Za-z0-9\\-]","")); 
... 
+0

이 답변은 너무 간단합니다. 우선 도메인 이름의 일부는 하이픈으로 시작하고 도메인 이름 부분의 유효성을 검사 할 수 없으며 길이도 적절합니다. IDN을 고려할 때 허용되는 문자를 a-z로 제한하는 것은 잘못되었습니다. – jarnbjo

+0

@jarnbjo : 유효한 포인트. 시작이나 끝이 아닌 길이, 하이픈도 유효성을 검사해야합니다. – Bala

+1

Bala, 동의하기 전에 jarnbjo가 말하는 변경 사항을 반영하여 답변을 업데이트 할 수 있습니까? – Dave

0

다음은 게임을 위해 만들어진 것입니다. 기본적으로 사용자 이름에서 잘못된 문자를 제거하는 데 사용한 것을 제외하고는 똑같은 것입니다.

char[] validChars = {a, b, c, d, etc...};//Put all valid characters in this array, so for subdomains put all letters and numbers 
public static String cleanString(String text){ 
    StringBuilder sb = new StringBuilder(""); 
    for(int i = 0;i < text.length();i++){ 
     for (int j = 0; j < validCharslength; j++) { 
      if (validChars[j] == text.charAt(i)) { 
       sb.append(text.charAt(i)); 
       break; 
      } 
     } 
    } 
    return sb.toString(); 
} 

코드에서 내 의견에 따르면, char 배열에는 유효한 문자가 모두 포함되어 있으므로 다른 것들은 제거됩니다. 그분은 돌아가는 방법이라는 것을 명심하십시오.

0

나는 여기에서 우연히 같은 문제에 대한 C# 해결책을 찾고있다. C# LINQ가 얼마나 우아하게 보이는지보십시오.)

if (model.UserName.All(char.IsLetterOrDigit) && !model.UserName.StartsWith("-")) 
{ 
    //oh yeah, valid subdomain  
} 

스펙에서 길이에 대해 말하는 내용이 확실하지 않습니다.

관련 문제