检查值是否没有数字,如果没有,则替换为';无效';使用 ;速记Java
如果字符串中没有数字,我想用Java(速记)将其替换为“无效”;这是Talend Open Studio中tMap组件中的一个表达式 以下是一些预期结果的示例: 以下是应保持不变的有效条目,它们是有效的:检查值是否没有数字,如果没有,则替换为';无效';使用 ;速记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
“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好地方,我修好了。我想这就是他现在想要的。