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