programing

문자열에서 텍스트를 제거하려면 어떻게 해야 합니까?

sourcejob 2022. 10. 15. 09:55
반응형

문자열에서 텍스트를 제거하려면 어떻게 해야 합니까?

는 ★★★★★★★★★★★★★★★★★★★★.data-123스트링

제거할 수 요?data-123

var ret = "data-123".replace('data-','');
console.log(ret);   //prints: 123

문서


모든 항목을 폐기하려면 다음을 사용합니다.

var ret = "data-123".replace(/data-/g,'');

PS: replace 함수는 새 문자열을 반환하고 원래 문자열은 변경하지 않으므로 replace() 호출 후에 함수 반환 값을 사용합니다.

"jQuery" "jQuery" "jQuery" 입니다. JavaScript 를 할 수 .replace★★★★

var str = "data-123";
str = str.replace("data-", "");

이 함수에 정규식을 전달할 수도 있습니다.다음 예제에서는 숫자를 제외한 모든 항목을 대체합니다.

str = str.replace(/[^0-9\.]+/g, "");

하시면 됩니다."data-123".replace('data-','');, 「」로서)replace()문자열이 다음과 같은 경우 일치하는 텍스트의 첫 번째 인스턴스만 대체합니다."data-123data-"그때

"data-123data-".replace('data-','');

는 첫 번째 일치하는 텍스트만 대체합니다.그리고 당신의 출력은"123data-"

데모

하려면 정규 .g하다

"data-123data-".replace(/data-/g,'');

그리고 당신의 출력은"123"

데모 2

원본 문자열을 잘라내야 하는 문자 수를 미리 알 수 있는 경우 slice()를 사용할 수 있습니다.지정된 시작점 사이의 문자를 끝점으로 반환합니다.

string.slice(start, end);

다음은 동작의 예를 제시하겠습니다.

var mystr = ("data-123").slice(5); // This just defines a start point so the output is "123"
var mystr = ("data-123").slice(5,7); // This defines a start and an end  so the output is "12"

데모

플레인오래된 JavaScript로 충분합니다.jQuery는 다음과 같은 간단한 작업에는 필요하지 않습니다.

var myString = "data-123";
var myNewString = myString.replace("data-", "");

자세한 내용과 사용 방법에 대해서는 MDN 관련 문서를 참조하십시오.

예:-

var value="Data-123";
var removeData=value.replace("Data-","");
alert(removeData);

이게 너한테 효과가 있길 바라.

1- 문자열에 시퀀스가 포함되어 있는 경우:

let myString = "mytest-text";
let myNewString = myString.replace("mytest-", "");

답은 텍스트입니다.

2-처음 3자를 삭제할 경우:

"mytest-text".substring(3);

답은 est-text입니다.

내가 만든 이 작은 기능은 항상 나에게 효과가 있었다:)

String.prototype.deleteWord = function (searchTerm) {
    var str = this;
    var n = str.search(searchTerm);
    while (str.search(searchTerm) > -1) {
        n = str.search(searchTerm);
        str = str.substring(0, n) + str.substring(n + searchTerm.length, str.length);
    }
    return str;
}

// Use it like this:
var string = "text is the cool!!";
string.deleteWord('the'); // Returns text is cool!!

그게 최선이라고는 할 수 없지만, 항상 효과가 있었습니다.

str.split('Yes').join('No'); 

그러면 해당 문자열이 원래 문자열에서 모두 대체됩니다.

C#(Sharp) 문자열에 익숙했습니다.메서드를 삭제합니다.Javascript에서는 문자열 제거 기능은 없지만 기판 기능은 있습니다.기판 함수를 한두 번 사용하여 문자열에서 문자를 제거할 수 있습니다.c# 메서드 first overload String과 마찬가지로 시작 인덱스에서 문자열 끝까지 문자를 삭제하는 함수를 만들 수 있습니다.삭제(인트 스타트)인덱스):

function Remove(str, startIndex) {
    return str.substr(0, startIndex);
}

또한 c# 메서드의 second overload String과 마찬가지로 시작 인덱스와 카운트 시 다음 함수를 사용하여 문자를 제거할 수도 있습니다.삭제(인트 스타트)인덱스, int 카운트):

function Remove(str, startIndex, count) {
    return str.substr(0, startIndex) + str.substr(startIndex + count);
}

이 두 가지 기능을 사용할 수도 있고 둘 중 하나를 사용할 수도 있습니다.

예:

alert(Remove("data-123", 0, 5));

출력: 123

성능

현재 2021.01.14 Chrome v87, Safari v13.1.2 및 Firefox v84에서 MacOs HighSierra 10.13.6에서 선택한 솔루션을 테스트합니다.

결과.

모든 브라우저용

  • 솔루션 Ba, Cb 및 DB는 긴 문자열에 대해 고속/고속입니다.
  • 솔루션 Ca, Da는 짧은 문자열에 대해 고속/고속입니다.
  • 솔루션 Ab와 E는 긴 문자열 동안 느리다
  • 솔루션 Ba, Bb 및 F는 짧은 문자열에 대해 느리다.

여기에 이미지 설명 입력

세부 사항

2가지 테스트 케이스를 수행합니다.

  • 짧은 문자열 - 10글자 - 여기서 실행할 수 있습니다.
  • 긴 문자열 - 1,000,000 문자 - 여기에서 실행할 수 있습니다.

아래 스니펫은 Aa Ab Ba Bb Ca Cb Da Db E F 솔루션을 제시합니다.

// https://stackoverflow.com/questions/10398931/how-to-strToRemove-text-from-a-string

// https://stackoverflow.com/a/10398941/860099
function Aa(str,strToRemove) {
  return str.replace(strToRemove,'');
}

// https://stackoverflow.com/a/63362111/860099
function Ab(str,strToRemove) {
  return str.replaceAll(strToRemove,'');
}

// https://stackoverflow.com/a/23539019/860099
function Ba(str,strToRemove) {
  let re = strToRemove.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // regexp escape char
  return str.replace(new RegExp(re),'');
}

// https://stackoverflow.com/a/63362111/860099
function Bb(str,strToRemove) {
  let re = strToRemove.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // regexp escape char
  return str.replaceAll(new RegExp(re,'g'),'');
}

// https://stackoverflow.com/a/27098801/860099
function Ca(str,strToRemove) {
  let start = str.indexOf(strToRemove);
  return str.slice(0,start) + str.slice(start+strToRemove.length, str.length);
}

// https://stackoverflow.com/a/27098801/860099
function Cb(str,strToRemove) {
  let start = str.search(strToRemove);
  return str.slice(0,start) + str.slice(start+strToRemove.length, str.length);
}

// https://stackoverflow.com/a/23181792/860099
function Da(str,strToRemove) {
  let start = str.indexOf(strToRemove);
  return str.substr(0, start) + str.substr(start + strToRemove.length);
}

// https://stackoverflow.com/a/23181792/860099
function Db(str,strToRemove) {
  let start = str.search(strToRemove);
  return str.substr(0, start) + str.substr(start + strToRemove.length);
}

// https://stackoverflow.com/a/49857431/860099
function E(str,strToRemove) {
  return str.split(strToRemove).join('');
}

// https://stackoverflow.com/a/45406624/860099
function F(str,strToRemove) {
    var n = str.search(strToRemove);
    while (str.search(strToRemove) > -1) {
        n = str.search(strToRemove);
        str = str.substring(0, n) + str.substring(n + strToRemove.length, str.length);
    }
    return str;
}


let str = "data-123";
let strToRemove = "data-";

[Aa,Ab,Ba,Bb,Ca,Cb,Da,Db,E,F].map( f=> console.log(`${f.name.padEnd(2,' ')} ${f(str,strToRemove)}`));
This shippet only presents functions used in performance tests - it not perform tests itself!

다음은 Chrome의 예시 결과입니다.

여기에 이미지 설명 입력

사용.match()그리고.Number()반환하다number변수:

Number(("data-123").match(/\d+$/));

// strNum = 123

위 문장이 하는 일은 다음과 같습니다.작업 중간값:

  1. str.match(/\d+$/)- 의 끝에 임의의 길이의 숫자와 일치하는 배열을 반환합니다.str이 경우 단일 문자열 항목을 포함하는 배열을 반환합니다.['123'].
  2. Number()- 숫자 유형으로 변환합니다.어레이가 다음에서 반환되었기 때문에.match()단일 요소 포함Number()번호가 반환됩니다.

문자열 인스턴스를 모두 교체하는 또 다른 방법은 새로운(2020년 8월 현재) 메서드를 사용하는 것입니다.

첫 번째 인수로 문자열 또는 RegEx 중 하나를 받아들이고 검색된 모든 일치를 두 번째 파라미터(문자열 또는 문자열을 생성하는 함수)로 바꿉니다.

서포트에 관한 한, 기입 시점에서는, 이 방법은 IE 를 제외한 모든 주요 데스크탑 브라우저*(Opera!까지)의 최신 버전에서 채용되고 있습니다.모바일의 경우 iOSiOS 13.7+ Safari, Androidv85+ Chrome, Androidv79+ Firefox도 모두 지원됩니다.

* 여기에는 Edge/Chrome v85+, Firefox v77+, Safari 13.1+ 및 Opera v71+가 포함됩니다.

사용자가 지원되는 브라우저 버전으로 업데이트하려면 시간이 걸리지만, 이제 광범위한 브라우저가 지원되기 때문에 시간이 걸림돌이 됩니다.

참고 자료:

현재 사용하고 있는 브라우저를 아래 스니펫에서 테스트할 수 있습니다.

//Example coutesy of MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll
const p = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?';

const regex = /dog/gi;

try {
  console.log(p.replaceAll(regex, 'ferret'));
  // expected output: "The quick brown fox jumps over the lazy ferret. If the ferret reacted, was it really lazy?"

  console.log(p.replaceAll('dog', 'monkey'));
  // expected output: "The quick brown fox jumps over the lazy monkey. If the monkey reacted, was it really lazy?"
  console.log('Your browser is supported!');
} catch (e) {
  console.log('Your browser is unsupported! :(');
}
.as-console-wrapper: {
  max-height: 100% !important;
}

루프내의 문자열을 교환하는 경우는, 반복 마다 새로운 Regex 를 개시하는 것을 확인해 주세요.이 문제는 9월 21일 현재도 Regex가 기본적으로 다른 매치를 찾을 수 없는 상태로 알려져 있습니다.이것을 처음 접했을 때, 저는 당황했습니다.

yourArray.forEach((string) => {
    string.replace(new RegExp(__your_regex__), '___desired_replacement_value___');
})

그렇게 하려고 하면 다른 사람만 해도 놀라지 마세요.

let reg = new RegExp('your regex');
yourArray.forEach((string) => {
    string.replace(reg, '___desired_replacement_value___');
})
const newString = string.split("data-").pop();
console.log(newString);

언급URL : https://stackoverflow.com/questions/10398931/how-to-remove-text-from-a-string

반응형