首页 > 解决方案 > 我将如何加密整个用户输入?

问题描述

我正在尝试加密用户输入的单词,但它只加密该单词的最后一个字母。

换句话说,如果我输入abc并单击按钮,浏览器将显示z而不是xyz. 它忽略ab.

我在做什么错以及如何纠正这个问题?

import React, { Component } from 'react';

class Main extends Component {
    constructor(props) {
        super(props);

        this.state = {
            show: false,
            encryptedValue: null
        };
    }

    encrypt = () => {
        let input = document.getElementById("inputText").value;
        let encryptedValue;

        let temp = "";

        for(let i = 0; i < input.length; i++) {
            temp += input[i];

            switch(input[i].charAt(i)) {
                case "a":
                    encryptedValue = "x";
                    break;
                case "b":
                    encryptedValue = "y";
                    break;
                case "c":
                    encryptedValue = "z";
                    break;
                default:
                    encryptedValue = null;

            }
        }

        document.getElementById("res").innerHTML = temp;

        this.setState({show: true, encryptedValue: encryptedValue});
    };

    render() {
        return(
            <div>
                <input type="text" placeholder="type something" id="inputText"/>
                <button onClick={() => this.encrypt()}>Click to encrypt</button>
                <h1 id="res">{this.state.encryptedValue}</h1>
            </div>
        );
    }
}

export default Main;

标签: javascriptreactjsdebugging

解决方案


在您的switch声明中,您不断设置encryptedValue一个全新的值,而不是附加到您以前的encryptedValue. 在这种情况下,abc它只会记住您加密的最后一个字符,所以z.

如果您想解决此问题,请将其更改=+=附加encryptedValue而不是覆盖它。

看起来您正在切换input[i].charAt(i)导致错误,因为input[i]已经包含您要切换的字符。

let input = "abc";
let encryptedValue = "";

for (let i = 0; i < input.length; i++) {

  switch (input[i]) {
    case "a":
      encryptedValue += "x";
      break;
    case "b":
      encryptedValue += "y";
      break;
    case "c":
      encryptedValue += "z";
      break;
    default:
      encryptedValue += "";

  }
}

console.log(encryptedValue);


推荐阅读