Java修剪字符和空格

时间:2016-05-19 03:02:51

标签: java string annotations character whitespace

在Java TestNG测试之上阅读注释,我的注释为:

@TestInfo(id={ " C26603", " C10047" }) 

其中TestInfo只是具有id() as String array的接口:

public String[] id() default {};

C26603以及C10047只是我指定的测试ID。

以下是测试结构的外观(例如):

案例1

@TestInfo(id={ " C26603", " C10047" })
public void testDoSomething() {
     Assert.assertTrue(false);
}

同样更清洁的案例是:

案例2:

@TestInfo(id={ "C26603", "C10047" })

正如您所见,此案例2比案例1更清晰。此案例2在测试ID中没有空格。

如何获取这些ID并确保它们在开头没有那个C字符而只是一个纯数字? 例如,我只想要{ {1}}表示我的第一个ID,26603表示第二个ID。 id数组中有一些空格(引号内)。我想修剪一切(如白色空格)并获得id。我目前正在应用10047来处理每个ID,一旦我得到纯数字,我想进行第三方API调用(API期望纯数作为输入,因此删除C作为初始字符和其他空格是重要)。

以下是我的尝试:

for loop

以上代码为案例1提供TestInfo annotation = method.getAnnotation(TestInfo.class); if(annotation!=null) { for(String test_id: annotation.id()) { //check if id is null or empty if (test_id !=null && !test_id.isEmpty()) { //remove white spaces and check if id = "C1234" or id = "1234" if(Character.isLetter(test_id.trim().charAt(0))) { test_id = test_id.substring(1); } System.out.println(test_id); System.out.println(test_id.trim()); } } } C26603。适用于案例2.

案例3:

not 26603

对于这种情况,没有C作为测试ID的起始字符,因此该函数应该足够智能,只需修剪空格并继续。

2 个答案:

答案 0 :(得分:5)

最简单的方法是使用正则表达式非数字字符类(\D)删除非数字的所有内容:

test_id = test_id.replaceAll("\\D", "");

答案 1 :(得分:2)

我强烈建议您调试方法。你会学到很多东西。

如果您在此处查看if声明:

if(Character.isLetter(test_id.trim().charAt(0))) {
    test_id = test_id.substring(1);
}

当您test_id =“C1234”时,您的情况属实。但是,您的问题变为substring

答案:trim它!

test_id = test_id.trim().substring(1);