Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java修剪字符和空格_Java_String_Annotations_Character_Whitespace - Fatal编程技术网

Java修剪字符和空格

Java修剪字符和空格,java,string,annotations,character,whitespace,Java,String,Annotations,Character,Whitespace,阅读Java TestNG test顶部的注释,我的注释如下: @TestInfo(id={ " C26603", " C10047" }) 其中TestInfo只是将id()作为字符串数组的接口: public String[] id() default {}; 和C26603和C10047只是我分配的测试ID 下面是测试结构的样子(例如): 案例1: @TestInfo(id={ " C26603", " C10047" }) public void testDoSomething()

阅读Java TestNG test顶部的注释,我的注释如下:

@TestInfo(id={ " C26603", " C10047" }) 
其中
TestInfo
只是将
id()作为字符串数组的接口

public String[] id() default {};
C26603
C10047
只是我分配的测试ID

下面是测试结构的样子(例如):

案例1

@TestInfo(id={ " C26603", " C10047" })
public void testDoSomething() {
     Assert.assertTrue(false);
}
同样,更干净的情况是:

案例2:

如您所见,案例2比案例1更清楚。这种情况2在测试ID中没有空格

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

以下是我尝试过的:

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());
            }
      }
}
上述代码给出了案例1的
C26603
not 26603
。它适用于案例2

案例3:


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

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


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

如果您在此处查看您的
If
语句:

if(Character.isLetter(test_id.trim().charAt(0))) {
    test_id = test_id.substring(1);
}
当您的
测试id
=“C1234”时,您的条件为真。但是,您的问题变成了
子字符串

回答:
trim
it

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

我浏览了一下你的个人资料,既然你是一个新用户,你能看看吗?如果你奖励帮助你的人,你会有更好的体验。明白了,我会记住这一点。请注意,输入
a3c5e
将导致
35
。如果可以的话,那么这是目前为止最简单的解决方案。我在做工程,对我来说是完美的解决方案。还有,@Andreas我只想要数字字符,这很有效。@PratikJaiswal很好。然后单击复选标记接受此答案。我只是想澄清一下效果,所以你可以睁大眼睛选择这个选项。这对我也适用。调试了很多,当然也学到了很多。
test_id = test_id.replaceAll("\\D", "");
if(Character.isLetter(test_id.trim().charAt(0))) {
    test_id = test_id.substring(1);
}
test_id = test_id.trim().substring(1);