我正试图让我的程序忽略包含各种特殊字符的数组中的字符串,并打印那些不包含任何我试图让我的程序读取的数组的字符串如下
TestCase[] testCases = {
new TestCase("", false),
new TestCase("5875123699", true),
new TestCase("123456", false),
new TestCase("12312312S1", false),
new TestCase("1234567841", true),
new TestCase("12312312312", false),
new TestCase("2222222222", false),
new TestCase("2222222232", true),
new TestCase("-875123699", false),
new TestCase("58751236.9", false),
new TestCase(null, false),`
答案 0 :(得分:1)
不确定您需要什么(在您的情况下是什么特殊字符),但如果您只想传递数字,请尝试使用其中之一:How to check if a String is numeric in Java
答案 1 :(得分:0)
你需要谨慎行事,因为你的字段可以为空...(就像上一个TestCase一样)
假设您可以使用java 8进行过滤,并且条件是String匹配仅数字模式,您的过滤器可以通过仅更改该过滤器来改进和修改...
Object[] t = Arrays.stream(testCases).filter(x ->
x.getName() != null && x.getName().matches("\\d+")
).toArray();
答案 2 :(得分:0)
从您的评论中我想您要检查您的字符串是否包含非字母数字字符。答案是here。
要将其应用于数组,您必须检查数组中的每个元素。可以使用简单的for循环,也可以使用例如为此流。由于for循环相当简单,我将展示流解决方案。这遍历所有字符串,而不是每个字符串中的每个字符,并过滤非字母数字字符串:
String [] array = new String[]{"asdf", ", ", "jklö", "%&"};
String[] filtered = Stream.of(array).filter(s -> s.chars().allMatch(Character::isLetterOrDigit)).toArray(String[]::new);
//will print [asdf, jklö]
System.out.println(Arrays.toString(filtered));
如果您想要过滤以排除例如我使用过的ö(它是字母数字,但有点特殊),只需将isLetterOrDigit
函数替换为您自己的一个检查。< / p>
哦,与他的评论中提到的domdom无关,你应该在你的旧问题上正确标记正确答案。
答案 3 :(得分:0)