マリッサニコラス:
私は、文字列から、両方の姓と名の最初の文字を抽出しようとしないのですが、今のところ何の運を持っていなかった(オンライン複数solutiosnを検索しようとした、運のいずれか)したがって、たとえば、これは文字列である場合。:
name = A A BCD EFG
私はAとEを(AEを言う)を表示します。私はtheresの場合は、これを行うための簡単な方法を把握しようとしています。私が使用しています正規表現は、私の最後の文字のための最初の文字が、doesntの仕事を取得しない、それは(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:
あなたは、グループ1の最初の名前の最初の文字とグループ2における姓の最初の文字をキャプチャして、全体のマッチを置き換えるために、この正規表現を使用することができます$1$2
目的の文字列を取得します。
^\s*([a-zA-Z]).*\s+([a-zA-Z])\S+$
説明:
^
- 文字列のスタート\s*
- 任意の空白(単数または複数)と一致([a-zA-Z])
- FirstNameおよびグループ1でキャプチャしての最初の文字にマッチします.*\s+
-ここでは.*
任意の貪欲テキストと一致して\s+
、それだけで最後の名前の前に最後の空白に一致する性を保証します([a-zA-Z])
- このキャプチャ最初の姓の文字とグループ2でキャプチャ、それを\S+$
- LASTNAMEと入力の端の部分を残りのマッチ
Javaコード、
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
このポストがJavaであるとして、それはそのように動作しません。 、したがって、あなたが使用することができます.toUpperCase()
同じのためのJavaコードを使用することです .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