Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

187
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda