¿Cómo puedo reemplazar todos los caracteres por otro con todas las posibilidades?
La función cambia progresivamente todos los caracteres por otros.
const globalReplace = (chain) => { let d = 0; for (let i = 0; i <= chain.length - 1; i++) { for (let j = 0; j <= d; j++) { console.log(chain.slice(0, chain.length - 1 - i), 'X', chain.slice(chain.length - i, chain.length + 1)); } d++; } return; }; globalReplace('ABCDE');el resultado es :
ABCDX ABCXE ABCXE ABXDE ABXDE ABXDE AXCDE AXCDE AXCDE AXCDE XBCDE XBCDE XBCDE XBCDE XBCDE
pero me gustaría :
ABCDX ABCXE ABCXX ABXDE ABXXE ABXXX AXCDE AXXDE AXXXE AXXXX XBCDE XXCDE XXXDE XXXXE XXXXX
¿Tienes alguna idea? Creo que mi función está cerca del resultado.
Como mencionó, el orden de las cadenas de salida no es importante. Teniendo eso en cuenta, he escrito un código en python (no estoy muy versado con js). Puedes traducirlo como necesites.
def global_replace(chain, r_chr): # chain is the string to replace, r_chr is character (in your example, 'X') replaced_strings = [] for i in range(0, len(chain)): r_str = r_chr * (i+1) # this creates a replace str of length (i+1) with repeated r_chr for j in range(0, len(chain)-i): s = chain[:j] + r_str # slice and replace portion of "chain" with r_str if j+i+1 < len(chain): # string index error check s += chain[j+i+1:] replaced_strings.append(s) return replaced_strings