Java,确保字符串只包含字母数字、空格和破折号
在Java中,我需要确保字符串只包含Java,确保字符串只包含字母数字、空格和破折号,java,string,parsing,contains,Java,String,Parsing,Contains,在Java中,我需要确保字符串只包含字母数字、空格和破折号字符 我发现类org.apache.commons.lang.StringUtils和几乎足够的方法isAlphanumericSpace(String)。。。但我还需要包括破折号 最好的方法是什么?我不想使用正则表达式。只需迭代字符串,使用java.lang.character中的字符类方法来测试每个字符是否可以接受。这大概就是StringUtils方法所做的一切,正则表达式只是一种驱动通用引擎做同样事情的方法。。。只需使用String
字母数字
、空格
和破折号
字符
我发现类org.apache.commons.lang.StringUtils
和几乎足够的方法isAlphanumericSpace(String)
。。。但我还需要包括破折号
最好的方法是什么?我不想使用正则表达式。只需迭代字符串,使用java.lang.character中的字符类方法来测试每个字符是否可以接受。这大概就是StringUtils方法所做的一切,正则表达式只是一种驱动通用引擎做同样事情的方法。。。只需使用String.chatAt(int)自己编程即可,非常简单 使用位置索引遍历字符串中的所有char,然后使用ASCII字符0到9、a到z和a到z使用连续代码这一事实进行比较,因此您只需检查字符x是否以数字方式验证以下条件之一:
- 介于“0”和“9”之间
- 在“a”和“z”之间
- 在“A”和“Z”之间
- 空格“
- 连字符'-'
public boolean isValidChar(CharSequence seq){
int len=序列长度();
对于(int i=0;i您有两个选项中的一个:
1.编写一个字符串中的字符列表,然后循环字符串检查以确保每个字符都在列表中。
2.编写一个字符串中不能包含的字符列表,然后循环字符串检查以确保每个字符都不在列表中
选择任何更快的选项组成列表。您可以使用:
StringUtils.isAlphanumericSpace(string.replace('-', ' '));
一定要使用regex表达式。如果有一个非常全面的系统来完成这项任务,那么编写您自己的系统是没有意义的。如果您需要了解或复习regex,请访问此网站,它非常棒:
在这一点上,我要挑战一下自己。在同一个库中,我还看到该方法只包含(String,char[]),但这意味着我必须列出整个字母表、从0到9的数字以及一个空格和一个破折号……对于我需要做的事情来说,似乎有点过于明确。我将使用java.lang.Character测试,而不是基于ASCII字符集进行假设。是的,Character.isleterordigit()确实如此,但它带来了非常显著的性能成本(比简单的代码点比较慢4到5倍)。它将拒绝许多其他有效的字母字符-这些字符在英语中使用不多,因此需要1μs而不是4μs。(是的,它将拒绝“μs”:-)假设他没有说,为了得到一个小的性能增益,他没有要求不是一个好主意。考虑Skiffead的建议使用Strutuuls.IsAdAudiaMuleCiScRe空间,在我的拙见中,它要好得多。为了清晰,Skiead意味着Strutuuls.IsAdAudiuMuleCiString(String),这比手工编码交互式检查要好得多。
StringUtils.isAlphanumericSpace(string.replace('-', ' '));