我有一个场景,用户必须在一个字段中输入它的第一个名字和姓氏,所以两个名字之间必须有一个空格,并且在空格之后必须至少有一个字符。我尝试使用contains("")
,但如果用户只输入一个空格并且在该空格后没有输入任何内容,则此方法返回true。
请指导我实现这一目标的方法。我也试图搜索Regular Expression
但未找到任何内容。
答案 0 :(得分:0)
您可以使用以下代码:
public static void main(String[] args) throws IOException {
String input = "first last";
if (input.matches("[a-zA-Z]*[\\s]{1}[a-zA-Z].*")) {
String[] name = input.split(" ");
System.out.println(Arrays.toString(name));
} else {
System.out.println("Please input the valid name.");
}
}
如果出现以下情况,它会将名字和姓氏列入数组:
[a-zA-Z]*
- 输入以字符开头; [\\s]{1}
- 包含仅一个空格; [a-zA-Z].*
- 以至少一个字符结束。答案 1 :(得分:0)
这是正则表达式和测试:
@Test
public void test_firstAndLastName_success() {
Pattern ptrn = Pattern.compile("(\\w+)\\s+(\\w+)");
Matcher matcher = ptrn.matcher("FirstName LastName");
if (matcher.find()) {
Assert.assertEquals("FirstName", matcher.group(1));
Assert.assertEquals("LastName", matcher.group(2));
} else {
Assert.fail();
}
}
验证是在matcher
上false
返回find
。
如果您不想允许多个空格(\s+
),请删除+
(仍允许单个标签)或用空格替换。
答案 2 :(得分:0)
修剪字符串后,使用“”进行简单拆分。
请查看以下代码以获得更多理解:
Exception
请查看有空格和无空格的其他情况。这应该会有所帮助。