Estoy trabajando en una pequeña página web que formatea el texto que ingresas, para un servidor de Minecraft en el que participo. Luego, el texto debe copiarse en un canal de discordia. El problema es el formato de Discord que permite que algunos caracteres puedan hacer que el texto esté subrayado o en negrita. Algunos nombres de usuario de Minecraft tienen subrayado, y quería hacer un bucle que agregue "" delante de cualquier guión bajo para que Discord los ignore. Esto es lo que se me ocurrió:
// example for result var result = "__MinecraftUsername__"; // the loop while (result.includes("_") == true) { result = i(result, result.indexOf("_"), "\"); } // in the actual code this is put into the html alert(result); // function to add characters at a specific index function i(str, index, value) { return str.substr(0, index) + value + str.substr(index); }Intente usar una función javascript como la de este ejemplo... que eliminará el bucle while.
Pero como sugerencia, ¿por qué no envolver los nombres de Minecraft con comillas inversas? Eso puede preservar los caracteres del nombre, sin intentar tratarlos como códigos de descuento. Como ejemplo de ajuste con comillas inversas, se conservan los caracteres que normalmente se tratarían como descuento: __some_*minecraft*_name__ .
Estoy usando jQuery solo para mostrar los resultados, por lo que puede ignorar jQuery.
var mcName = "_some_minecraft_name_"; $(".original").text(mcName); var results = mcName.replaceAll("_", "\"); $(".sample").text(results); /** * This change to the javascript String prototype adds a replaceAll * function to the String. This prevents the need to do a * split().join() explicitly. * * @param search * @param replace * @returns */ String.prototype.replaceAll = function( search, replace ) { var results = this.split(search).join(replace); return results; }; <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <p class="original"></p> <p class="sample"></p>