¿Cómo consigo la primera y última / carácter inicial de una cadena de nombre

Marissa Nicholas:

Estoy tratando de extraer el primer carácter de tanto nombre y apellido de una cadena, pero no han tenido suerte hasta ahora (tratado de buscar múltiples solutiosn en línea, sin suerte tampoco) Así, por ejemplo, si se trata de la cadena.:

name = A A BCD EFG

Quiero mostrar sólo A y E (AE dicen). Estoy tratando de averiguar si los theres una manera más fácil de hacer esto. La expresión regular que estoy usando, me pone el primer carácter, pero no funciona para el último carácter, devuelve (AEFG), también conocido como el conjunto de apellido lugar. ¿Hay una manera de hacer esto? Aquí está mi 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:

Se puede utilizar esta expresión regular para capturar la primera letra del nombre en el grupo 1 y primera letra del apellido en grupo2 y reemplazar partido entero con $1$2para obtener la cadena deseada.

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

Explicación:

  • ^ - Comienzo de la cadena
  • \s* - Hace coincidir espacio en blanco opcional (s)
  • ([a-zA-Z]) - Se corresponde con la primera letra del apellido y lo captura en el grupo 1
  • .*\s+- A continuación, .*coincide con cualquier texto con avidez y \s+se asegura de que coincida con el último espacio en blanco justo antes apellido
  • ([a-zA-Z]) - Esto captura la primera letra del apellido y lo captura en grupo2
  • \S+$ - Partidos restante parte del apellido y final de la entrada

demostración de expresiones regulares

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"));

Huellas dactilares,

AE

Editar: para convertir / garantizar el texto reemplazado a mayúsculas, en caso de que el nombre está en letras minúsculas, en expresiones regulares PCRE basada puede utilizar \Ujusto antes de la sustitución como \U$1$2pero como este post es en Java, no va a funcionar de esa manera y por lo tanto se puede utilizar.toUpperCase()

Demo para asegurar el texto reemplazado está en mayúsculas

código Java para los mismos sería utilizar .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 en mayúsculas a pesar de la cadena de entrada en minúsculas,

AE

Supongo que te gusta

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