JavaScript를 사용하여 문자열에서 공백을 제외한 모든 특수 문자를 제거하십시오.
JavaScript를 사용하여 문자열에서 공백을 제외한 모든 특수 문자를 제거하고 싶습니다.
예를 들어로 abc's test#s
출력해야합니다 abcs tests
.
단일 정규식과 함께 문자열 바꾸기 기능을 사용해야합니다. 특수 문자로 가정하면 문자가 아닌 것을 의미합니다. 여기에 해결책이 있습니다.
var str = "abc's test#s";
alert(str.replace(/[^a-zA-Z ]/g, ""));
제거하려는 문자를 지정하여 수행 할 수 있습니다.
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
또는 숫자와 문자를 제외한 모든 문자를 변경하려면 다음을 시도하십시오.
string = string.replace(/[^a-zA-Z0-9]/g, '');
첫 번째 솔루션은 UTF-8 알파벳에는 작동하지 않습니다. (Привіт와 같은 텍스트를 잘라냅니다). RegExp를 사용하지 않고 JavaScript 엔진에서 우수한 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
).
JavaScript를 모르지만 정규식을 사용할 수 없습니까?
같은 [^\w\d\s]
것은 숫자, 문자 및 공백 이외의 항목과 일치합니다. JavaScript에서 구문을 찾는 것은 단지 질문 일 것입니다.
나는 Seagul의 매우 창의적인 솔루션을 시도했지만 숫자를 특수 문자로 취급하여 내 요구에 맞지 않는다는 것을 알았습니다. 여기에 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 '';
}
모두 검색하지 않음 (단어 문자 || 공백) :
str.replace(/[^\w ]/, '')
점 (.)은 특수한 것으로 간주되지 않을 수 있습니다. Mozfet 's & Seagull의 답변에 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 '';
}
문자열에서 제거하려는 특수 문자의 목록을 준비한 다음 사용자 javascript replace 함수를 사용하여 모든 특수 문자를 제거하십시오.
var str = 'abc'de#;:sfjkewr47239847duifyh';
alert(str.replace("'","").replace("#","").replace(";","").replace(":",""));
또는 전체 문자열에 대해 루프를 실행하고 단일 단일 문자를 ASCII 코드와 비교하고 새 문자열을 재생성 할 수 있습니다.
'programing tip' 카테고리의 다른 글
DateTime에서 일 빼기 (0) | 2020.07.16 |
---|---|
왜 학교에서 이런 것들을 가르치지 않습니까? (0) | 2020.07.16 |
psycopg2 : 하나의 쿼리로 여러 행 삽입 (0) | 2020.07.16 |
POST (ajax)를 통해 JSON 데이터를 보내고 Controller (MVC)에서 JSON 응답을받습니다. (0) | 2020.07.15 |
HTML (0) | 2020.07.15 |