检查多行字符串是否仅包含 Java 中由 1 个逗号分隔的 2 个数字
Check if multi-line String contain only 2 numbers separated by 1 comma in Java
我有这段代码获取一个写在 TextArea 中的字符串并通过一个方法传递它(也允许多行):
String ad = ady.getText();
if (ad.matches("-?[0-9]+,-?[0-9]+") || ad.matches("-?[0-9]+,-?[0-9]+\n")) {
String[] parts = ad.split(",");
int num1 = Integer.parseInt(parts[0]);
int num2 = Integer.parseInt(parts[1]);
if (num1 <= cl.size() && num1 > 0) {
g.addCliente(nom, urba, street, ad);
} else {
JOptionPane.showMessageDialog(this, "Cliente inválido");
}
} else {
JOptionPane.showMessageDialog(this, "Formato inválido");
}
如您所见,它已经检查字符串是否遵循特定格式“num1,num2”并且 num1 必须小于 size。我该怎么做才能检查 TextArea 中每一行的相同格式,然后将其传递为:“Num1,Num2\nNum1,Num2\nNum1,Num2”以及用户在 TextArea 中写入的所有行?
如您所见,我尝试在 ("-?[0-9]+,-?[0-9]+") 的末尾添加 \n 并使其成为 OR if,但它不工作。
答案如下:
String nom = nombre.getText();
String urba = urb.getText();
String street = calle.getText();
String ad = ady.getText();
String[] lines = ad.split("\n");
String adya = "";
for (String line : lines) {
if (line.matches("-?[0-9]+,-?[0-9]+")) {
String[] parts = line.split(",");
int num1 = Integer.parseInt(parts[0]);
//int num2 = Integer.parseInt(parts[1]);
if (num1 <= cl.size() && num1 > 0) {
adya += line+"\n";
} else {
JOptionPane.showMessageDialog(this, "Cliente inválido");
return;
}
} else {
JOptionPane.showMessageDialog(this, "Formato inválido");
return;
}
}
g.addCliente(nom, urba, street, adya.substring(0,adya.length()-1));
最后一行在通过方法传递时删除了最后一个“\n”。
我有这段代码获取一个写在 TextArea 中的字符串并通过一个方法传递它(也允许多行):
String ad = ady.getText();
if (ad.matches("-?[0-9]+,-?[0-9]+") || ad.matches("-?[0-9]+,-?[0-9]+\n")) {
String[] parts = ad.split(",");
int num1 = Integer.parseInt(parts[0]);
int num2 = Integer.parseInt(parts[1]);
if (num1 <= cl.size() && num1 > 0) {
g.addCliente(nom, urba, street, ad);
} else {
JOptionPane.showMessageDialog(this, "Cliente inválido");
}
} else {
JOptionPane.showMessageDialog(this, "Formato inválido");
}
如您所见,它已经检查字符串是否遵循特定格式“num1,num2”并且 num1 必须小于 size。我该怎么做才能检查 TextArea 中每一行的相同格式,然后将其传递为:“Num1,Num2\nNum1,Num2\nNum1,Num2”以及用户在 TextArea 中写入的所有行?
如您所见,我尝试在 ("-?[0-9]+,-?[0-9]+") 的末尾添加 \n 并使其成为 OR if,但它不工作。
答案如下:
String nom = nombre.getText();
String urba = urb.getText();
String street = calle.getText();
String ad = ady.getText();
String[] lines = ad.split("\n");
String adya = "";
for (String line : lines) {
if (line.matches("-?[0-9]+,-?[0-9]+")) {
String[] parts = line.split(",");
int num1 = Integer.parseInt(parts[0]);
//int num2 = Integer.parseInt(parts[1]);
if (num1 <= cl.size() && num1 > 0) {
adya += line+"\n";
} else {
JOptionPane.showMessageDialog(this, "Cliente inválido");
return;
}
} else {
JOptionPane.showMessageDialog(this, "Formato inválido");
return;
}
}
g.addCliente(nom, urba, street, adya.substring(0,adya.length()-1));
最后一行在通过方法传递时删除了最后一个“\n”。