배열 요소의 목록을 기반으로 단어/문장에서 일치하는 문자를 특정 문자로 변경하기 위해 HTML + JavaScript로 간단한 사이트를 만들고 있습니다.
다음과 같은 다차원 배열이 있다고 가정해 보겠습니다.
var wordList= [
["dj", "j"],
["ch", "kh"],
];
따라서 누군가 "Djakarta"라고 쓰면 사이트는 어레이의 일치 항목을 기반으로 "Jakarta"로 변경합니다. "Chairul"과 동일하게 "Khairul"로 변경됩니다.
여기까지 내 code는 다음과 같습니다.
/* Words that will be changed */
var wordList= [
["dj", "j"],
["ch", "kh"],
];
/* Main function */
function main() {
//Initialize #formEjaanLama
formEjaanLama= document.getElementById("formEjaanLama");
//Get value #formEjaanLama
valueFormEjaanLama= formEjaanLama.value;
//Initialize #formEjaanBaru
formEjaanBaru= document.getElementById("formEjaanBaru");
//Mulai perubahan
for (var arrayIndex in wordList) {
var regex= new RegExp(wordList[arrayIndex][0], "gi");
valueFormEjaanLama.replaceAll(regex, wordList[arrayIndex][1]);
}
console.log(valueFormEjaanLama);
}
배열 인덱스
는 현재 배열 인덱스의 수입니다.~을위한
고리. 그래서단어 목록[배열 인덱스][0]
같음디제이
그리고채널
. 등등.
사이트를 실행하고 입력했습니다.자카르타
하지만 말은 전혀 바뀌지 않았다.
여기서 놓친 것이 있습니까? 감사합니다. 자세한 내용이 필요하면 알려주십시오.
RegExp 참조: https://stackoverflow.com/a/494046/13293193
- 답변 # 1
- 답변 # 2
그 이유는
모두 다 바꿔
그리고바꾸다
방법, "반품
" 문자열이고 해당 메서드에 사용된 문자열의 값을 바꾸지 않습니다.다음을 의미합니다.
valueFormEjaanLama.replaceAll(정규식, wordList[arrayIndex][1]);
올바른 결과를 반환하지만 반환된 결과를 사용하는 code가 없으므로 원하는 목표를 얻지 못합니다.code를 다음으로 변경:
for (var arrayIndex in wordList) { var regex= new RegExp(wordList[arrayIndex][0], "gi"); valueFormEjaanLama= valueFormEjaanLama.replaceAll(regex, wordList[arrayIndex][1]); }
또한 정규 표현식은 다음과 같습니다.
var 정규식= 새로운 정규식(단어 목록[배열 인덱스][0], "기")
값에 'dj' 또는 'ch'가 있는 모든 단어와 일치합니다.
valueFormEjaan라마
예: 'textdj' 또는 'textdjtext' 등과 같은 텍스트와 일치합니다. 그래서 그것을 변경var 정규식= 새로운 RegExp("\\b" + wordList[arrayIndex][0], "gi")
다음 단어의 경우에만 일치합니다.단어 목록
값의 시작 부분에 있습니다.valueFormEjaan라마
.
같은 변수에 값을 할당하기만 하면 code가 작동합니다.