Reemplazar última palabra con asterisco, o una duración de dos palabras

wilmerlpr:

Necesito ocultar el apellido de las personas. Para las personas con tres palabras en su nombre, simplemente ocultar última palabra, ej:

Laura Torres Bermudez

pues, deben

Laura Torres ********

y para

Maria Fernanda Gonzales Lopez

debiera ser

Maria Fernanda ******** *****

Creo que son dos expresiones regulares porque se basa en el número de palabras, se aplicará la expresión regular.

Sé que \w+sustituye a todas las palabras de un solo asterisco, y con (?!\s).lo que puedo reemplazar caracteres, excepto espacios. Espero que puedas ayudarme. Gracias.

Este es mi ejemplo: https://regex101.com/r/yW4aZ3/942

Wiktor Stribiżav:

Una solución de JavaScript que no se basa en el ECMAScript cuenta con 2.018 expresión regular extendida es

s = s.replace(/^(\S+\s+\S+)([\s\S]*)/, function($0, $1, $2) {return $1 + $2.replace(/\S/g, '*');})

detalles:

  • ^ - comenzar de cuerda
  • (\S+\s+\S+) - Grupo 1: uno o más no-espacios en blanco, 1 o más espacios en blanco y, a continuación 1 o más que no son espacios en blanco
  • ([\s\S]*) - Grupo 2: Cualquiera 1 o más caracteres.

La sustitución es del Grupo 1 contenidos y el contenido del Grupo 2 con cada Char no está en blanco reemplazado con un asterisco.

Solución de Java :

s = s.replaceAll("(\\G(?!^)\\s*|^\\S+\\s+\\S+\\s+)\\S", "$1*");

Vea la demostración de expresiones regulares

detalles

  • (\G(?!^)\s*|^\S+\s+\S+\s+)- Grupo 1: ni entonces final del partido anterior ( \G(?!^)) y 0 o más espacios en blanco o ( |) 1+ no espacios en blanco, espacios en blanco y de nuevo 1+ 1+ no espacios en blanco, 1+ espacios en blanco al inicio de la cadena
  • \S - un char no está en blanco.

Supongo que te gusta

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