我有一个关于Java验证的问题,我看过上一个主题,似乎没有人回答我的小问题。
我要做的是验证在构造函数中放入字符串变量的内容,以及使用set方法时的内容。
我需要的是如果输入Mrs Mrs或Ms先生,那么在变量(标题)中设置如果没有那么将标题设置为''未设置'并打印错误,现在我知道如何最后一部分,它验证用户输入的变量我被困在...我试过使用数组但是无法让它工作并尝试if语句,再次无法得到它运作
答案 0 :(得分:4)
public void setTitle(final String title)
{
if (title.matches("^Mrs|Mr|Miss|Ms$"))
{
this.title = title;
}
else
{
this.title = "Not Set";
System.err.format("%s is not a valid title, expecting Mrs,Mr,Miss,Ms\n", title);
}
}
如果您想要不区分大小写,请将正则表达式更改为:
"(?i)^Mrs|Mr|Miss|Ms$"
然后你可以只用小写整个东西和大写只是第一个字母来重新规范你的输入到你真正想要的。谷歌为“java正确案例”找到一些预先写好的代码片段。
更简洁的一个班轮,同样区分大小写:
public void setTitle(final String title)
{
title.matches("^Mrs|Mr|Miss|Ms$")) ? this.title= title: this.title= "Not Set";
}
答案 1 :(得分:0)
使用此
String title = textBoxTitle.getText();
if(!title.equals("Mr") && !title.equals("Miss") && !title.equals("Mrs") && !title.equals("Ms"))
{
// Text is invalid
}
else
{
// Text is valid
}
答案 2 :(得分:0)
为什么不调用一个执行验证的小方法然后设置值?
private void validateString(String) {
if string is valid
call setter
}
答案 3 :(得分:-1)
我很确定你做了类似的事情 -
if(title =="Mr."){ blah.. } // this will check the address
do this instead ..
if(title.equals("Mr."){blah..} // this will check the values..
答案 4 :(得分:-1)
创建一组您关心的单词(将它们大写),然后查看标题是否属于集合:
Set allowedTitles = new HashSet();
allowedTitles.add("MR");
allowedTitles.add("MRS");
allowedTitles.add("MS");
allowedTitles.add("MISS");
if (! allowedTitles.contains(textBoxTitle.getText().trim().toUpperCase()) {
//print exception
}
else { title = textBoxTitle.getText().trim());