Есть ли что-то, что позволяет избежать проверки некоторых символов (в частности, 1, f, x и b) при вводе?

#reactjs #react-tsx

#reactjs #react-tsx

Вопрос:

У меня есть поле для проверки повторных вопросов. Я должен преобразовать специальные символы в обычные буквы с помощью метода, а затем я использую метод для пропуска пробелов и других символов, чтобы проверить, соответствует ли новый текст существующим вопросам. В моем локальном все работает нормально, но в производственном экземпляре он пропускает символы 1, f, x и b. Мой производственный проект смонтирован в Linux.

Мои два метода:

     replaceSpecialCharacters(output){  
            return output = output.replace(/á|é|í|ó|ú|ñ|ä|ë|ï|ö|ü|à|è|ì|ò|ù/ig,function (str,offset,s) {  
                var str = str=="á"?"a":str=="é"?"e":str=="í"?"i":str=="ó"?"o":str=="ú"?"u":str=="ñ"?"n":str;  
                    str = str=="Á"?"A":str=="É"?"E":str=="Í"?"I":str=="Ó"?"O":str=="Ú"?"U":str=="Ñ"?"N":str;  
                    str = str=="à"?"a":str=="è"?"e":str=="ì"?"i":str=="ò"?"o":str=="ù"?"u":str;  
                    str = str=="À"?"A":str=="È"?"E":str=="Ì"?"I":str=="Ò"?"O":str=="Ù"?"U":str;  
                    str = str=="ä"?"a":str=="ë"?"e":str=="ï"?"i":str=="ö"?"o":str=="ü"?"u":str;  
                    str = str=="Ä"?"A":str=="Ë"?"E":str=="Ï"?"I":str=="Ö"?"O":str=="Ü"?"U":str;  
                return (str);  
            });  
        }  

  
     validateRepeatedQuestion(question): void {    
            var questionToCheck = this.replaceSpecialCharacters(question).replace(/[(s) (¿) (?) (¡) (!) (") (') ]/g, "");  
            this.setState({isRepeated: false});    
            for (let i = 0; i < this.props.allQuestions.length; i  ) {    
                var questionFromArray = this.replaceSpecialCharacters(this.props.allQuestions[i].text).replace(/[(s) (¿) (?) (¡) (!) (") (') ]/g, "");    
                if(this.props.allQuestions[i].position != this.props.question.position){   
                    if(questionFromArray.toLocaleLowerCase() == questionToCheck.toLocaleLowerCase()){    
                        this.setState({isRepeated: true});    
                    }   
                }  
            }  
        }  
  

Если у меня есть вопрос типа «Сколько вам лет?», И я пытаюсь добавить вопрос типа «Сколько вам лет?1111», я ожидаю, что проверка примет новый вопрос как другой, но фактический результат говорит, что вопрос повторяется, даже если я добавляю цифры 1. Это должно быть по-другому.

Комментарии:

1. Эта функция замены специальных символов намного сложнее, чем должна быть. переключатель или объект сделают это более чистым.

2. Не могли бы вы рассмотреть возможность отображения этого кода в качестве изолированной среды кода ( codesandbox.io ), или где-то еще с большим контекстом? validateRepeatedQuestion знает о множестве вещей (всех this.props ), которых у нас нет.