sourcecode

JavaScript를 사용하여 문자열에서 공백을 제외한 모든 특수 문자 제거

copyscript 2022. 12. 6. 22:06
반응형

JavaScript를 사용하여 문자열에서 공백을 제외한 모든 특수 문자 제거

JavaScript를 사용하여 문자열에서 공백을 제외한 모든 특수문자를 제거하고 싶습니다.

예를들면,abc's test#s로서 출력해야 한다.abcs tests.

문자열 치환 함수를 단일 정규식과 함께 사용해야 합니다.특수문자가 문자가 아닌 것을 의미한다고 가정하면 다음과 같은 해결책이 있습니다.

const str = "abc's test#s";
console.log(str.replace(/[^a-zA-Z ]/g, ""));

삭제할 문자를 지정할 수 있습니다.

string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');

또는 숫자와 문자를 제외한 모든 문자를 변경하려면 다음을 수행합니다.

string = string.replace(/[^a-zA-Z0-9]/g, '');

첫 번째 솔루션은 UTF-8 알파벳에서는 작동하지 않습니다.('우리나라' 등의 텍스트가 잘립니다).JavaScript 엔진에서 RegExp를 사용하지 않고 UTF-8을 지원하는 기능을 만들었습니다.기호가 대소문자일 경우 특수문자인 경우 아이디어는 간단합니다.공백은 예외입니다.

function removeSpecials(str) {
    var lower = str.toLowerCase();
    var upper = str.toUpperCase();

    var res = "";
    for(var i=0; i<lower.length; ++i) {
        if(lower[i] != upper[i] || lower[i].trim() === '')
            res += str[i];
    }
    return res;
}

업데이트: 이 솔루션은 대문자와 소문자가 있는 언어에서만 사용할 수 있습니다.중국어 같은 언어에서는 이 방법이 통하지 않습니다.

업데이트 2: 퍼지 검색 작업을 할 때 원래 솔루션을 찾았습니다.검색 기능을 구현하기 위해 특수 문자도 삭제하려는 경우 더 나은 방법이 있습니다.라틴 문자에서만 문자열을 생성할 수 있는 임의의 번역 라이브러리를 사용합니다.그러면 간단한 Regexp는 특수 문자를 삭제하는 모든 마법을 수행합니다.(이것은 중국어에도 유효하며, 다음과 같이 함으로써 부수적인 이점도 얻을 수 있습니다.)Tromsø==Tromso).

search all not (워드 문자 || 공백):

str.replace(/[^\w ]/, '')

JavaScript는 모르지만 regex를 사용할 수 없습니까?

뭐랄까[^\w\d\s]숫자, 문자 및 공백 이외의 모든 것과 일치합니다.JavaScript에서 구문을 찾는 것은 질문일 뿐입니다.

Seagul의 매우 창의적인 솔루션을 사용해 보았지만 숫자도 특수 문자로 취급되어 제 요구에 맞지 않았습니다.이게 시걸의 해결책에 대한 수정사항입니다.

//return true if char is a number
function isNumber (text) {
  if(text) {
    var reg = new RegExp('[0-9]+$');
    return reg.test(text);
  }
  return false;
}

function removeSpecial (text) {
  if(text) {
    var lower = text.toLowerCase();
    var upper = text.toUpperCase();
    var result = "";
    for(var i=0; i<lower.length; ++i) {
      if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '')) {
        result += text[i];
      }
    }
    return result;
  }
  return '';
}

이것을 사용해 보세요.

var result= stringToReplace.replace(/[^\w\s]/g, '')

[^]부정하기 위한 거야\w위해서[a-zA-Z0-9_]단어 문자 및\s공간,/[]/g글로벌용

const str = "abc's@thy#^g&test#s";
console.log(str.replace(/[^a-zA-Z ]/g, ""));

점(.)은 특별한 것으로 간주되지 않을 수 있습니다.Mozfet & Galmy의 답변에 OR 조건을 추가했습니다.

function isNumber (text) {
      reg = new RegExp('[0-9]+$');
      if(text) {
        return reg.test(text);
      }
      return false;
    }

function removeSpecial (text) {
  if(text) {
    var lower = text.toLowerCase();
    var upper = text.toUpperCase();
    var result = "";
    for(var i=0; i<lower.length; ++i) {
      if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '') || (lower[i].trim() === '.')) {
        result += text[i];
      }
    }
    return result;
  }
  return '';
}

이것을 시험해 보세요.

const strippedString = htmlString.replace(/(<([^>]+)>)/gi, "");
console.log(strippedString);

const input = `#if_1 $(PR_CONTRACT_END_DATE) == '23-09-2019' # 
Test27919<alerts@imimobile.com> #elseif_1 $(PR_CONTRACT_START_DATE) ==  '20-09-2019' #
Sender539<rama.sns@gmail.com> #elseif_1 $(PR_ACCOUNT_ID) == '1234' #
AdestraSID<hello@imimobile.co> #else_1#Test27919<alerts@imimobile.com>#endif_1#`;
const replaceString = input.split('$(').join('->').split(')').join('<-');


console.log(replaceString.match(/(?<=->).*?(?=<-)/g));

문자열에서 삭제할 특수문자의 목록을 작성한 후 사용자 javascript를 사용하여 특수문자를 모두 제거합니다.

var str = 'abc'de#;:sfjkewr47239847duifyh';
alert(str.replace("'","").replace("#","").replace(";","").replace(":",""));

또는 문자열 전체에 대해 루프를 실행하여 단일 문자를 ASCII 코드와 비교하고 새 문자열을 재생성할 수 있습니다.

언급URL : https://stackoverflow.com/questions/6555182/remove-all-special-characters-except-space-from-a-string-using-javascript

반응형