2016-09-17 3 views
0

私は、ユーザーが最初の名前と姓を1つのフィールドに入力しなければならないシナリオがあるので、2つの名前の間にスペースが必要です少なくとも文字でなければならない。 contains("")を使用しようとしましたが、ユーザーがスペースを入力してそのスペースの後に何も入力しない場合、このメソッドはtrueを返します。1つのフィールドの名と姓の正規表現

これを達成する方法を親切に教えてください。私もRegular Expressionを検索しようとしましたが、何も見つけられませんでした。

+0

ええ、私はスペースの後に単一の文字を入力していない場合、私は彼を停止するでしょう – Kirmani88

答えて

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(); 
    } 
} 

検証がfindfalseを返すmatcherです。

複数のスペース()を許可しない場合は、+(これは1つのタブで許可されます)を削除するか、スペースで置き換えてください。

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

ありがとう、しかし、ここでは、ユーザーがスペースの後に単一の単語を入力していない場合、私は彼に警告メッセージを表示します – Kirmani88

+0

私は私の答えを更新しました。 – DimaSan

0

""を使った単純な分割は、文字列のトリミング後に行います。

より理解するために以下のコードを確認してください:

String[] splitter = null; 

String s = "abbsd sdsdf"; // string with 2 words and space 

    splitter = s.trim().split(" "); 

    if(splitter.length!=2){ 
     System.out.println("Please enter first or last name"); 
    } 
    else{ 
     System.out.println("First Name : "+splitter[0]); 
     System.out.println("Last Name : "+splitter[1]); 
    } 

    s = "abc"; //string without space 

    splitter = s.trim().split(" "); 

    if(splitter.length!=2){ 
     System.out.println("Please enter first or last name"); 
    } 
    else{ 
     System.out.println("First Name : "+splitter[0]); 
     System.out.println("Last Name : "+splitter[1]); 
    } 

をして、スペースのない他のシナリオに確認してください。これは助けになるはずです。