我编写了以下方法来验证输入String并将其输出为int数组。该方法完全按照我的需要工作,但我想为它添加一些额外的验证,以便它只允许输入中的整数和逗号,所以没有错误。
正确的输入示例如下:
"7,23,62,8,1130"
方法是:
public static int[] validator (String [] check) {
int [] out = new int[5];
try
{
if (0 < Integer.parseInt(check[0]) && Integer.parseInt(check[0]) < 100)
{
out[0] = Integer.parseInt(check[0]);
}
else
{
throw new InvalidMessageException();
}
}
catch (InvalidMessageException ex)
{
System.err.println("Invalid instruction message");
return null;
}
try
{
if (0 < Integer.parseInt(check[1]))
{
out[1] = Integer.parseInt(check[1]);
}
else
{
throw new InvalidMessageException();
}
}
catch (InvalidMessageException ex)
{
System.err.println("Invalid instruction message");
return null;
}
try
{
if(0 < Integer.parseInt(check[2]))
{
out[2] = Integer.parseInt(check[2]);
}
else
{
throw new InvalidMessageException();
}
}
catch (InvalidMessageException ex)
{
System.err.println("Invalid instruction message");
return null;
}
try
{
if (0 <= Integer.parseInt(check[3]) && Integer.parseInt(check[3]) < 256)
{
out[3] = Integer.parseInt(check[3]);
}
else
{
throw new InvalidMessageException();
}
}
catch (InvalidMessageException ex)
{
System.err.println("Invalid instruction message");
return null;
}
try
{
if(0 < Integer.parseInt(check[4]))
{
out[4] = Integer.parseInt(check[4]);
}
else
{
throw new InvalidMessageException();
}
}
catch (InvalidMessageException ex)
{
System.err.println("Invalid instruction message");
return null;
}
return out;
}
我考虑过这样做:
inputText = inputText.replace(".", "");
inputText = inputText.replace(":", "");
inputText = inputText.replace(";", "");
inputText = inputText.replace("\"", "");
等等......但它似乎并不是一个特别好的解决方案。如果有人有更好的想法,请告诉我。非常感谢您的帮助!
答案 0 :(得分:2)
您可以使用正则表达式验证输入:
[0-9]+(,[0-9]+)*,?
使用字符串匹配(正则表达式)方法检查它:
if (yourString.matches("[0-9]+(,[0-9]+)*,?")) {
}
答案 1 :(得分:2)
我会说这样的话应该取代你的方法,而不必阅读你的代码,只需要你的要求:
String input = "7,23,62,8,1130";
if (input.matches("(?:\\d+(?:,|$))+")) {
int[] result = Arrays.stream(input.split(",")).mapToInt(Integer::parseInt).toArray();
} else {
throw new InvalidMessageException("");
}
答案 2 :(得分:0)
这正是正则表达式的用途:
string userSelection = seatingArray[userRow - 1][userColumn -1];