Estoy tratando de no incluir números mayores de 26 en mi entrada. Entonces, si un usuario ingresa 27 arriba en la etiqueta de entrada, no se mostrará en el resultado. ¿Cómo puedo hacerlo? Aquí está mi código gracias!
Please separate the numbers using space, for example: <br> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <br> Output: ABCDEFGHIJKLMNOPQRSTU VWXYZ <br><br><br> <input type="text" id="inputNum"><br> <button onclick="convert()">Convert to Letters</button> <br> <p id="result"></p> <script> function convert() { let numbers = document.getElementById("inputNum").value; let outputVal = numbers.replace("10", "J").replace("11", "K").replace(/12/gi, "L").replace("13", "M").replace("14", "N").replace("15", "O").replace("16", "P").replace("17", "Q").replace("18", "R").replace("19", "S").replace("20", "T").replace("21", "U").replace("22", "V").replace("23", "W").replace("24", "X").replace("25", "Y").replace("26", "Z").replace(/1/gi, "A").replace(/2/gi, "B").replace("3", "C").replace("4", "D").replace("5", "E").replace("6", "F").replace("7", "G").replace("8", "H").replace("9", "I"); document.getElementById("result").innerHTML = outputVal; } </script>Solo una validación básica puede funcionar:
function convert() { let numbers = document.getElementById("inputNum").value; if(isNaN(numbers) || parseInt(numbers) > 26){ return; } let outputVal = numbers.replace("10", "J").replace("11", "K").replace(/12/gi, "L").replace("13", "M").replace("14", "N").replace("15", "O").replace("16", "P").replace("17", "Q").replace("18", "R").replace("19", "S").replace("20", "T").replace("21", "U").replace("22", "V").replace("23", "W").replace("24", "X").replace("25", "Y").replace("26", "Z").replace(/1/gi, "A").replace(/2/gi, "B").replace("3", "C").replace("4", "D").replace("5", "E").replace("6", "F").replace("7", "G").replace("8", "H").replace("9", "I"); document.getElementById("result").innerHTML = outputVal; }Sugeriría simplificar la lógica usando String.split() y Array.reduce() .
Podemos verificar cada número para asegurarnos de que esté dentro del rango en la llamada .reduce() (>=0 y <= 26).
Luego puede usar String.fromCharCode() para convertir cada número en una letra:
function convert() { let numbers = document.getElementById("inputNum").value.trim(); let outputVal = numbers.split(/\s+/).reduce((acc, n) => { return acc + (((n >= 0) && (n <= 26)) ? String.fromCharCode(+n + 64) + ' ': ''); }, ''); document.getElementById("result").innerHTML = outputVal; } Please separate the numbers using space, for example: <br> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <br> Output: ABCDEFGHIJKLMNOPQRSTU VWXYZ <br><br><br> <input type="text" id="inputNum"><br> <button onclick="convert()">Convert to Letters</button> <br> <p id="result"></p>