如何删除子域中的非法字符?

时间:2014-09-17 15:15:28

标签: java replace subdomain illegal-characters

我正在使用Java 6.使用Amazon AWS库,我正在动态创建域。但是,我正在寻找一个可以从子域中删除非法字符的函数。例如。如果我的功能即将创建

dave'ssite.mydomain.com

我想将字符串“dave'ssite”传递给某个函数,该函数会删除撇号,或者子域中潜伏的其他非法字符。

我该怎么办?更具体的问题是,如何识别非法子域名是什么?

3 个答案:

答案 0 :(得分:1)

子域名与域名相同,因此很可能允许的字符为A-Z a-z 0-9 and -。因此,您可以使用正则表达式。

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

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

答案 1 :(得分: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数组包含所有有效字符,其他任何内容都将被删除。请记住,他是一种回归方法。

答案 2 :(得分:0)

我在这里偶然发现了寻找同一问题的c#解决方案,而且好在这里。看看c#LINQ如何优雅;)

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

不确定规格中有关长度的内容。