URL 시작 부분의 문자열 제거


105

www.URL 문자열의 시작 부분에서 " "부분 을 제거하고 싶습니다.

예를 들어 다음 테스트 사례에서 :

www.test.comtest.com
www.testwww.comtestwww.com
testwww.comtestwww.com(존재하지 않는 경우)

Regexp를 사용해야합니까, 아니면 스마트 기능이 있습니까?


이것은 아주 오래된 질문이지만이 아닌 정규식에 대한 URL 파서를 사용한다 2019 년 지적 가치
mikemaccana

1
의 소유자는 www.com이러한 모든 응답에 몹시 슬퍼 할 것입니다.
BrainCore 2011

답변:


234

필요한 사항에 따라 몇 가지 선택 사항이 있으며 다음을 수행 할 수 있습니다.

// this will replace the first occurrence of "www." and return "testwww.com"
"www.testwww.com".replace("www.", "");

// this will slice the first four characters and return "testwww.com"
"www.testwww.com".slice(4);

// this will replace the www. only if it is at the beginning
"www.testwww.com".replace(/^(www\.)/,"");

24
아마도 마지막 것이 최적의 솔루션 일 것입니다.
Christoph

11
최적의 솔루션이 아닙니다. 부분 문자열을 제거하기 위해 정규 표현식을 만드는 것은 과잉입니다!
berezovskyi

4
@berezovskiy 그것은 당신이하는 일에 달려 있습니다. 히트. 그럼에도 불구하고 대답은 선택할 수있는 3 가지 다른 예를 제공합니다.
nicosantangelo

7
마지막 옵션을 강력히 선호합니다. 사용하는 slice()것이 약간 더 빠르다 는 것은 사실이지만 이는 시나리오의 99.9 %에서 관련성이없고 조기에 최적화 된 것입니다. 작성 replace(/^www\./,"") 은 명확하고 자체 문서화 코드입니다.
Tom Lord

5
첫 번째 및 두 번째 솔루션은 세 번째 예제 사례에서 실패합니다. tutut
Yarek T

13

예, RegExp가 있지만이를 사용하거나 "스마트"기능을 사용할 필요는 없습니다.

var url = "www.testwww.com";
var PREFIX = "www.";
if (url.indexOf(PREFIX) == 0) {
  // PREFIX is exactly at the beginning
  url = url.slice(PREFIX.length);
}

11

문자열의 형식이 항상 같으면 단순한 substr()것으로 충분합니다.

var newString = originalStrint.substr(4)

4
testwww.comtwww.com= 실패
Christoph

1
@Christoph Ya, 그가 내 대답 후에 그의 질문을 편집 한 방식으로 문자열이 항상 동일한 형식을 갖는지 언급 한 이유 입니다 .
talnicolas

14
@Christoph 그리고 "것 testwww.comwww.com= FAIL"
talnicolas

6

수동으로

var str = "www.test.com",
    rmv = "www.";

str = str.slice( str.indexOf( rmv ) + rmv.length );

또는 다음을 사용하십시오 .replace().

str = str.replace( rmv, '' );

1
정규식을 엉망으로 만들 위험없이 문자열이 변수에서 나올 수 있기 때문에 수동 접근 방식을 좋아합니다.
nha

5

removePrefix 함수를 사용하여 String 프로토 타입을 오버로드 할 수 있습니다.

String.prototype.removePrefix = function (prefix) {
    const hasPrefix = this.indexOf(prefix) === 0;
    return hasPrefix ? this.substr(prefix.length) : this.toString();
};

용법:

const domain = "www.test.com".removePrefix("www."); // test.com

String의 프로토 타입을 수정하는 것은 나쁜 습관이라고 생각합니다
dman

예, 어떤 프로토 타입을 오버로드처럼, 위험이 (여기에 또 다른 방법으로 이름이 충돌하는 것입니다 removePrefixString클래스), 반대로 그냥 호출에 매우 편리합니다 .removePrefix. 그것은 당신에게 달려 있습니다.
Flavien Volken

2

다음을 시도하십시오

var original = 'www.test.com';
var stripped = original.substring(4);

0

URL을 자르고 response.sendredirect (new url)를 사용할 수 있습니다. 그러면 새 URL과 동일한 페이지로 이동합니다.


0

또 다른 방법:

Regex.Replace(urlString, "www.(.+)", "$1");
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.