Me gustaría saber cómo cambiar un poco las palabras de mi entrada de área de texto. No quisiera que todas las palabras en la oración sean codificadas, sino solo (algunas) de las letras en (algunas) de las palabras. El orden de las palabras tiene que ser el mismo.
Estaba pensando en usar var string_array = string.split (""); pero no pude encontrar mucha documentación sobre esto y tampoco pude encontrar ninguna otra opción que fuera buena para mí.
¿Alguien tiene sugerencias sobre cómo hacer esto?
<!--Made by MysteriousDuck#5764-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" type="text/css" href="style.css">
<script src="textchanger.js"></script>
<title>Text changer</title>
</head>
<body>
<div class="container">
<h1> Text Changer </h1>
<h2> CAPS text changer</h2>
<textarea type="text" autofocus="true" placeholder="input text" id="inputText" value="Input Value"
spellcheck="false"></textarea>
<button class="button button1" onclick="myConvertFunction()">Convert</button>
<textarea type="text" placeholder="CoNvErTeD tExT" id="converted" value="Clear" readonly="true"
spellcheck="false"></textarea>
<button class="button button1" onclick="myCopyFunction(); eraseText();">Copy</button>
</div>
</body>
</html>
/* Made by MysteriousDuck#5764 */
function myConvertFunction() {
var x = document.getElementById("inputText").value;
var foo = x.split("");
var string = "";
for (i = 0; i < foo.length; i++) {
if (i % 2 == 0) {
string += foo[i].toUpperCase();
} else {
string += foo[i];
}
}
document.getElementById("converted").value = string;
}
function myCopyFunction() {
var copyText = document.getElementById("converted");
copyText.select();
document.execCommand("copy");
alert("Copied the text: " + copyText.value);
eraseText();
}
function eraseText() {
document.getElementById("converted").value = "";
document.getElementById("inputText").value = "";
document.getElementById("inputText").focus();
}
function randomizeLetters() {
var x = document.getElementById("inputText").value;
}
3 respuestas
Puede usar
function scramble(text) {
let words = text.split(' ');
words = words.map(word => {
if (word.length > 2) {
return word.split('').sort(() => 0.5-Math.random()).join('');
}
return word;
});
console.log(words);
return words.join(' ');
}
Parece que estás buscando capitalizar personajes alternativos. Si ese es el caso, puede dividir el valor de textarea
y luego usar map
en la matriz. map
devolverá una nueva matriz. La devolución de llamada del mapa interior verifica el index
del personaje. Si es par, entonces conviértalo a mayúsculas. Dado que map
devuelve una nueva matriz, puede usar join
para crear una nueva cadena a partir de la matriz
function myConvertFunction() {
var x = document.getElementById("inputText").value;
var foo = x.split("");
var string = foo.map(function(item, index) {
if (index % 2 === 0) {
return item.toUpperCase();
} else {
return item;
}
})
document.getElementById("converted").value = string.join('');
}
function myCopyFunction() {
var copyText = document.getElementById("converted");
copyText.select();
document.execCommand("copy");
alert("Copied the text: " + copyText.value);
eraseText();
}
function eraseText() {
document.getElementById("converted").value = "";
document.getElementById("inputText").value = "";
document.getElementById("inputText").focus();
}
function randomizeLetters() {
var x = document.getElementById("inputText").value;
}
<div class="container">
<h1> Text Changer </h1>
<h2> CAPS text changer</h2>
<textarea type="text" autofocus="true" placeholder="input text" id="inputText" value="Input Value" spellcheck="false"></textarea>
<button class="button button1" onclick="myConvertFunction()">Convert</button>
<textarea type="text" placeholder="CoNvErTeD tExT" id="converted" value="Clear" readonly="true" spellcheck="false"></textarea>
<button class="button button1" onclick="myCopyFunction(); eraseText();">Copy</button>
</div>
La siguiente función toma una cadena como argumento. Revuelve cualquier palabra en esa cadena al azar. También escribe en mayúscula cualquier letra de la palabra al azar
function randomizeString(sentence) {
const words = sentence.split(' ');
return words.map(word => {
const flag = getRandomInt(2);
return flag ? scrambleWord(word) : word;
}).join(' ');
function getRandomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}
function scrambleWord (word) {
var scramble = '';
word = word.split('');
while (word.length > 0) {
scramble += word.splice(word.length * Math.random() << 0, 1);
}
return randomCapitalizeWord(scramble);
}
function randomCapitalizeWord(word) {
return word.split('').map(letter => {
const flag = getRandomInt(2);
return flag ? letter.toUpperCase() : letter;
}).join('');
}
}
Preguntas relacionadas
Nuevas preguntas
javascript
Para preguntas sobre la programación en ECMAScript (JavaScript / JS) y sus diversos dialectos / implementaciones (excepto ActionScript). Incluya todas las etiquetas relevantes en su pregunta; por ejemplo, [node.js], [jquery], [json], etc.