Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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_Regex_Talend - Fatal编程技术网

检查值是否没有数字,如果没有,则替换为';无效';使用 ;速记Java

检查值是否没有数字,如果没有,则替换为';无效';使用 ;速记Java,java,regex,talend,Java,Regex,Talend,如果字符串中没有数字,我想用Java(速记)将其替换为“无效”;这是Talend Open Studio中tMap组件中的一个表达式 以下是一些预期结果的示例: 以下是应保持不变的有效条目,它们是有效的: “1234” “123-456-7890” “(123)456-7890” 以下是一些要替换为“无效”的值: “asdf” “(xxx)xxx xxxx” “()-()-()” “***-***-****” “-” 以下是我迄今为止所尝试的: myTable.myField.replaceAl

如果字符串中没有数字,我想用Java(速记)将其替换为“无效”;这是Talend Open Studio中tMap组件中的一个表达式

以下是一些预期结果的示例:

以下是应保持不变的有效条目,它们是有效的:

  • “1234”

  • “123-456-7890”

  • “(123)456-7890”

  • 以下是一些要替换为“无效”的值:

  • “asdf”

  • “(xxx)xxx xxxx”

  • “()-()-()”

  • “***-***-****”

  • “-”

  • 以下是我迄今为止所尝试的:

    myTable.myField.replaceAll(“[0-9]”,“”)。isEmpty()?“无效”:myTable.myField


    但它不起作用,至少在Talend中不起作用,只要替换所有数字的字符串,如下所示:

    myString.replaceAll("^[0-9]+$", "invalid");
    
    根据评论,OP希望替换任何没有数字的字符串。以下是答案:

    myString.replaceAll("^[^0-9]+$", "invalid");
    
    此外,这将替换具有某些数字的字符串:

    myString.replaceAll("^.*[0-9].*$", "invalid");
    

    只需替换所有数字的字符串,如下所示:

    myString.replaceAll("^[0-9]+$", "invalid");
    
    根据评论,OP希望替换任何没有数字的字符串。以下是答案:

    myString.replaceAll("^[^0-9]+$", "invalid");
    
    此外,这将替换具有某些数字的字符串:

    myString.replaceAll("^.*[0-9].*$", "invalid");
    

    您必须将其设置为:

    myTable.myField = myTable.myField.replaceAll("[0-9]","").length() == 0 ? "Invalid" : myTable.myField;
    
    但是,在这种情况下,我将使用if语句:

    if (myTable.myField.replaceAll("[0-9]","").length() == 0){
        myTable.myField = new String("Invalid");
    }
    

    您必须将其设置为:

    myTable.myField = myTable.myField.replaceAll("[0-9]","").length() == 0 ? "Invalid" : myTable.myField;
    
    但是,在这种情况下,我将使用if语句:

    if (myTable.myField.replaceAll("[0-9]","").length() == 0){
        myTable.myField = new String("Invalid");
    }
    

    为什么不使用一个非常简单的
    模式呢

    例如:

    String foo = "abc123";
    String bar = "abcdef";
    Pattern p = Pattern.compile("\\d");
    System.out.println(p.matcher(foo).find());
    System.out.println(p.matcher(bar).find());
    
    输出:

    true
    false
    
    因此,在你的情况下:

    if (p.matcher(myTable.myField).find()) {
        // I'm just making the method "setText" up - replace with actual method
        myTable.myField.setText("Invalid");
    }
    

    为什么不使用一个非常简单的
    模式呢

    例如:

    String foo = "abc123";
    String bar = "abcdef";
    Pattern p = Pattern.compile("\\d");
    System.out.println(p.matcher(foo).find());
    System.out.println(p.matcher(bar).find());
    
    输出:

    true
    false
    
    因此,在你的情况下:

    if (p.matcher(myTable.myField).find()) {
        // I'm just making the method "setText" up - replace with actual method
        myTable.myField.setText("Invalid");
    }
    

    您必须将其设置为:
    myTable.myField=myTable.myField.replaceAll(“[0-9]”),length()=0?“无效”:myTable.myField
    检查此项,它可能会有帮助
    isEmpty()
    length()==0
    的快捷方式。若要改进您的问题,请提供输入和预期输出的示例。从您的示例中,您似乎在寻找作为@JoshF answer的一部分的
    replaceAll(^0-9]+$,“无效”)
    。您必须将其设置为:
    myTable.myField=myTable.myField.replaceAll([0-9],“)。length()=0?“无效”:myTable.myField
    检查此项,它可能会有帮助
    isEmpty()
    length()==0
    的快捷方式。为了改进您的问题,请提供输入和预期输出的示例。从您的示例中,您似乎在寻找
    replaceAll(^0-9]+$,“无效”)
    ,这是@JoshF answer的一部分。
    isEmpty()
    length()==0做的事情相同。
    isEmpty()
    length()做的事情相同==0
    。字符串是不可变的,您需要用替换结果重新分配它。您好,我希望用“无效”替换没有数字的字符串,而不是全部无效的字符串digits@Drewdavid
    。。。如果删除所有数字产生空字符串
    不同,请将没有数字的字符串替换为“无效”
    。是哪一个?@Drewdavid我回答了您写的问题,但是如果您希望所有字符串至少包含一个数字,请使用以下命令:^.*[0-9].*$:对不起,问题不是这样的clear@Pshemo好地方,我修好了。我想这就是他现在想要的。字符串是不可变的,你需要用替换的结果重新分配它。嗨,我想用“无效”替换没有数字的字符串,而不是全部无效的字符串digits@Drewdavid
    。。。如果删除所有数字产生空字符串
    不同,请将没有数字的字符串替换为“无效”
    。是哪一个?@Drewdavid我回答了您写的问题,但是如果您希望所有字符串至少包含一个数字,请使用以下命令:^.*[0-9].*$:对不起,问题不是这样的clear@Pshemo好地方,我修好了。我想这就是他现在想要的。