Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

179
Vistas
¿Cómo se reconoce y/o reemplaza un valor de cadena con formato personalizado?

Estoy recuperando una estructura de datos compatible con JSON de una API de chat en vivo, pero cuando un mensaje de chat muestra una imagen, el valor del message muestra la URL en su propio formato, incrustado entre %%%[ y ]%%% .

El siguiente objeto ofrece una vista previa de lo que se acaba de describir...

 { events: [{ method: "chat", object: { message: { bgColor: null, color: "#494949", font: "default", message: "%%%[emoticon name|https://example.org/name.jpg|67|45|/emoticon_report/name/]%%%" }, user: { gender: "m", username: "" } }, id: "text" }], nextUrl: "text" }

Al procesar la estructura de datos anterior, me gustaría reemplazar cada valor de mensaje que presenta el formato de emoticono de ... %%%[ ... ]%%% ... por "Emoticon" .

El código con el que estoy trabajando ahora es...

 const baseUrl = "example.com" function getEvents(url) { fetch(url).then(response => response.json()) .then(jsonResponse => { // Process messages for (const message of jsonResponse["events"]) { const method = message["method"] const object = message["object"] console.log(`Message ID: ${message["id"]}`) if (method === "chat") { console.log(`${object["user"]["username"]} sent chat message: ${object["message"]["message"]}`) } else { console.error("Unknown method:", method) } } // Once messages are processed, call getEvents again with 'nextUrl' to get new messages getEvents(jsonResponse["nextUrl"]) }) .catch(err => { console.error("Error:", err) }) } getEvents(baseUrl)

Por el momento el resultado del script es...

 Username: Hi Username: %%%[emoticon name|https://example.org/name.jpg|67|45|/emoticon_report/name/]%%%

... pero debería cambiarse a ...

 Username: Hi Username: Emoticon

Gracias por todas las respuestas, ha ayudado mucho a descifrar parte del código. Ya casi lo tengo hecho. El único problema que sigo viendo es que si el chat ha publicado varias imágenes con un mensaje, limpia todo el mensaje.

Por ejemplo: Hola, esto es (imagen), así que intente (imagen) < esto solo muestra Hola, esto es Emoticon

Pero puedo vivir con eso;)

El código final que tengo incluye la siguiente línea para limpiarlo:

 var cleanmessage = chat.replace(/%%%\[emoticon.*]%%%/g, `Emoticon`);
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

De los comentarios anteriores...

"En primer lugar, el OP no funciona con un objeto json, no hay nada de eso. Pero el OP itera sobre los elementos de event de la estructura de datos del objeto de respuesta. Para cada elemento, el OP quiere verificar el valor de propiedad de item.message.message Por lo tanto, la verdadera pregunta del OP es... '¿Cómo se reconoce un formato de emoticón?' "

El OP podría echar un vistazo a ... String.prototype.startsWith

 // faking the live chat API call for the further example code. function fetch(/* fake api call url */) { return new Promise(resolve => { const responseData = '{"events":[{"method":"chat","object":{"message":{"bgColor":null,"color":"#494949","font":"default","message":"%%%[emoticon name|https://example.org/name.jpg|67|45|/emoticon_report/name/]%%%"},"user":{"gender":"m","username":""}},"id":"text"}],"nextUrl":"text"}'; setTimeout(() => { resolve({ json: () => JSON.parse(responseData), }); }, 4000); }); } const baseUrl = "example.com"; function getEvents(url) { console.log(`... fetch('${ url }') ...`); fetch(url) .then(response => response.json()) .then(({ events, nextUrl }) => { // Process messages of chat events events .forEach(event => { const { method, object: { user, message }, id } = event; console.log(`Message event ID: ${ id }`); if ( (method === 'chat') && message.message.startsWith('%%%[emoticon') ) { // console.log(`${ user.username } sent chat message: ${ message.message }`); console.log(`${ user.username } sent chat message: ${ 'Emoticon' }`); // // and/or directly overwrite the data // message.message = 'Emoticon'; } else { console.error("Unknown method:", method); } }); // Once messages are processed, call `getEvents` // again with 'nextUrl' to get new messages. getEvents(nextUrl); }) .catch(err => { console.error("Error:", err); }); } getEvents(baseUrl);
 .as-console-wrapper { min-height: 100%!important; top: 0; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Antes de usar su objeto ["mensaje"]["mensaje"] (o incluso mejor simplemente object.message.message) simplemente haga un reemplazo de expresiones regulares como este:

 object.message.message.replace(/%%%\[emoticon.*]%%%/, 'Emoticon')

patio de recreo aquí: https://regex101.com/r/7Kf0VW/1

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda