Como faço para obter o primeiro e último caractere / inicial a partir de uma cadeia de nome

Marissa Nicholas:

Eu estou tentando extrair o primeiro caractere de ambos primeiro e último nome de uma cadeia, mas não tiveram sorte até agora (tentei procurar múltipla solutiosn on-line, sem sorte também) Assim, por exemplo, se esta é a string.:

name = A A BCD EFG

Eu quero mostrar apenas A e E (dizer AE). Eu estou tentando descobrir se há uma maneira mais fácil de fazer isso. A regex Eu estou usando, não me começar o primeiro caractere, mas não funciona para o último caractere, ele retorna (AEFG), também conhecido como o todo do sobrenome vez. Existe uma maneira de fazer isso? Aqui está o meu código:

 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 Kumar Rajwanshi:

Você pode usar esse regex para capturar a primeira letra do primeiro nome em grupo1 e primeira letra do sobrenome no group2 e substituir jogo inteiro com $1$2a obter a seqüência desejada.

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

Explicação:

  • ^ - Início da corda
  • \s* - Jogos espaço em branco opcional (s)
  • ([a-zA-Z]) - Jogos a primeira letra do primeiro nome e captura-o em grupo1
  • .*\s+- Aqui .*corresponde a qualquer texto com avidez e \s+garante que ele combina com o último espaço em branco logo antes sobrenome
  • ([a-zA-Z]) - Isto captura a primeira letra do sobrenome e captura-o em group2
  • \S+$ - Jogos restante parte do sobrenome e final da entrada

regex Demonstração

código Java,

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

Prints,

AE

Edit: Para converter / assegurar o texto substituído para letras maiúsculas, caso o nome é em letras minúsculas, em PCRE regex com base você pode usar \Uum pouco antes da substituição, \U$1$2mas como este post é em Java, não vai funcionar dessa maneira e, portanto, você pode usar.toUpperCase()

Demo para assegurar o texto substituído é em letras maiúsculas

código Java para mesmo seria usar .toUpperCase()

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

Imprime em maiúsculas, apesar da seqüência de entrada em letras minúsculas,

AE

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=224279&siteId=1
Recomendado
Clasificación