나는 이름 문자열에서 첫 번째와 마지막 초기 / 문자를 얻는 방법

마리사 니콜라스 :

나는 문자열에서 모두 성과 이름의 첫 번째 문자를 추출하려고하지하고 있지만, 아직까지 운이 없었다 (시도 여러 작성 솔루션을 검색 온라인, 운이 중 하나) 그래서 예를 들어,이 문자열 인 경우. :

name = A A BCD EFG

난 그냥 A와 E는 (AE 말)을 표시합니다. 나는 프로그래머 경우이 작업을 수행 할 수있는 쉬운 방법을 알아 내려고 노력하고있다. 대신 성 전체 일명, 내가 사용하고있는 정규식은 나에게 첫 번째 문자를 얻을 수 없지만, 마지막 문자에 대한 나던 작업, 그것은 (AEFG)를 반환합니다. 이것에 대해 갈 수있는 방법이 있습니까? 여기 내 코드는 :

 String lastName = "";
        String firstName= "";

        if(name.split("\\w+").length>1){

            lastName = name.substring(name.lastIndexOf(" ")+1,1);
            firstName = name.substring(0,1);
        }
        else{
            firstName = name;
        }
        String completeInitials = firstName + " " + lastName;
Pushpesh 쿠마 Rajwanshi :

당신은 그룹 2에서 그룹 1 및 LASTNAME의 첫 글자에서 이름의 첫 글자를 캡처와 전체 경기를 바꾸려면이 정규식을 사용하여 $1$2원하는 문자열을 얻을합니다.

^\s*([a-zA-Z]).*\s+([a-zA-Z])\S+$

설명:

  • ^ - 문자열의 시작
  • \s* - 옵션 공백 (들)을 일치
  • ([a-zA-Z]) - 첫 FIRSTNAME의 문자와 그룹 1에서 캡처를 일치
  • .*\s+- 여기 .*탐욕 텍스트를 일치하고 \s+보장하지만 그것은 단지 마지막 이름 앞에 마지막 공백을 일치
  • ([a-zA-Z]) -이 캡처 최초의 LASTNAME의 문자와 그룹 2에서 캡처를
  • \S+$ - 매치 LASTNAME 입력의 단부의 일부를 나머지

정규식 데모

자바 코드,

String s = "A A BCD EFG";
System.out.println(s.replaceAll("^\\s*([a-zA-Z]).*\\s+([a-zA-Z])\\S+$", "$1$2"));

인쇄물,

AE

편집 : 변환에 / 이름이 소문자 인 경우 대문자로 교체 된 텍스트를 확인 PCRE 기반 정규 표현식에서 당신이 사용할 수있는 \U단지로 교체하기 전에 \U$1$2하지만이 게시물은 자바에서와 같이, 그것은 그런 식으로 작동하지 않습니다 따라서 당신은 사용할 수 있습니다.toUpperCase()

대체 텍스트를 확보하기위한 데모 대문자 인

동일한 사용하는 것입니다 자바 코드 .toUpperCase()

String s = "a A BCD eFG";
System.out.println(s.replaceAll("^\\s*([a-zA-Z]).*\\s+([a-zA-Z])\\S+$", "$1$2").toUpperCase());

소문자 입력 문자열에도 불구하고 대문자로 인쇄,

AE

추천

출처http://43.154.161.224:23101/article/api/json?id=224278&siteId=1