0

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

dave'ssite.mydomain.com

我想将字符串“dave'ssite”传递给某个函数,该函数将去掉撇号或潜伏在子域中的任何其他非法字符。

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

4

3 回答 3

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\\-]","")); 
...
于 2014-09-17T15:25:49.330 回答
0

我偶然发现这里正在寻找相同问题的 ac# 解决方案,而这里就是。看看 c# LINQ 是多么优雅;)

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

不过,不确定规范中关于长度的内容。

于 2015-04-07T06:43:40.150 回答
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 数组包含所有有效字符,其他任何字符都将被删除。请记住,他是一种返回方法。

于 2014-09-17T16:18:54.317 回答