我使用的是Java 6。使用Amazon AWS库,我可以动态创建域名。然而,我正在寻找一个功能,可以剥离非法字符从子域名。例如,如果我的函数将要创建
dave'ssite.mydomain.com我想把字符串“dave‘’ssite”传递给某个函数,这个函数会去掉撇号,或者其他任何潜伏在子域中的非法字符。
我该怎么做呢?THe更具体的问题是,我如何识别非法的子域字符?
发布于 2014-09-17 23:25:49
子域与域相同,因此最可能允许的字符是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\\-]",""));
...发布于 2014-09-18 00:18:54
这是我为一个游戏做的一些东西。它基本上是一样的东西,除了我用它来删除用户名中的无效字符。
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数组包含所有有效字符,其他任何字符都将被删除。请记住,his是一个返回方法。
发布于 2015-04-07 14:43:40
我在这里偶然发现了一个c#解决方案来解决同样的问题,而它就在这里。看看c# LINQ是如何做到这一点的;)
if (model.UserName.All(char.IsLetterOrDigit) && !model.UserName.StartsWith("-"))
{
//oh yeah, valid subdomain
}不过,我不确定规范中对长度有什么规定。
https://stackoverflow.com/questions/25894359
复制相似问题