특정 문자 뒤에있는 모든 것을 제거하십시오


281

특정 캐릭터 뒤의 모든 것을 제거하거나 그 캐릭터까지 모든 것을 선택하는 방법이 있습니까? href에서 "?"까지의 값을 얻고 있으며 항상 다른 양의 문자가됩니다.

이렇게

/Controller/Action?id=11112&value=4444

href /Controller/Action만 사용하고 싶기 때문에 "?"뒤에있는 모든 것을 제거하고 싶습니다.

나는 이것을 지금 사용하고있다 :

 $('.Delete').click(function (e) {
     e.preventDefault();

     var id = $(this).parents('tr:first').attr('id');                
     var url = $(this).attr('href');

     console.log(url);
 }

답변:


468
var s = '/Controller/Action?id=11112&value=4444';
s = s.substring(0, s.indexOf('?'));
document.write(s);

여기 샘플

또한 네이티브 문자열 함수는 정규 표현식보다 훨씬 빠르며 필요할 때만 사용해야합니다 (이 경우 중 하나는 아닙니다).

'?'가없는 코드를 업데이트했습니다.

var s = '/Controller/Action';
var n = s.indexOf('?');
s = s.substring(0, n != -1 ? n : s.length);
document.write(s);

여기 샘플


15
이 스파게티 코드가 최선의 대답이되어서는 안됩니다. 분할 방법 답변 참조
LastTribunal

1
LoL-어떻게해서 정규식을 이해하지 못하고 분할이 어떻게 투표권을 얻었는지 이해합니다. 문자열 메소드를 이해하면 충분합니다. 일이 어떻게 작동하고 세계에서 가장 큰 코드 규칙을 이해하는 것이 가장 적습니다 .P

1
LoL-분할은 정규식을 허용하므로 분할을 사용하지 않는 경우 +1입니까? LoL-Javascript는 정규식을 사용하므로 Javascript를 사용하지 않기 때문에 +1입니까? 더 많은 코드와 복잡성이 간단한 작업이 될 수있는 방법은 무엇입니까? 정규식과 분할이 더 간단하고 효과적이지 않습니까?

294

split()기능을 사용할 수도 있습니다 . 이것은 내 마음에 오는 가장 쉬운 것 같습니다 :).

url.split('?')[0]

jsFiddle 데모

한 가지 장점은 ?문자열에 없는 경우에도이 방법이 작동 한다는 것입니다. 전체 문자열을 반환합니다.


1
이 상황에서 [0]은 무엇을합니까?
Dejan.S

13
split배열 (이 경우에는 두 가지 요소가 반환 0하고 1), 및 [0]반환 어레이의 첫 번째 요소를 얻는다.
kapa

41
+1, 이것에 대한 가장 좋은 점은 '?'가 없어도 항상 작동한다는 것입니다.
Kevin

'\'를 나누려면 어떻게해야합니까?
anud33p

1
이 답변을 매우 간단하면서도 강력하게 제공합니다
Richlewis

19
var href = "/Controller/Action?id=11112&value=4444";
href = href.replace(/\?.*/,'');
href ; //# => /Controller/Action

'?'를 찾으면 작동합니다. 그렇지 않으면


이것은 단지 '?'를 제거합니다. OP의 다른 일부는 요청하지 않았습니다
Kevin

4
이것은 후에 모든 것을 제거합니다 ?(포함)
mcont

2
최고의 답변 ! 영업 이익은 후 제거 모든 것을 요구 ?하고 명확하게 제거 언급 한 ?말에 의해 또한 : 나는 href가되고 싶어 / 컨트롤러 / 액션 만

3

"?"를 유지하려면 특정 문자 뒤의 모든 것을 제거 하면 다음과 같이 할 수 있습니다.

var str = "/Controller/Action?id=11112&value=4444",
    stripped = str.substring(0, str.indexOf('?') + '?'.length);

// output: /Controller/Action?

문자열이 포함되지 않은 경우 작동하지 않습니다?
스테판 Bijzitter

@StephanBijzitter 예, 알고 있습니다. 내 대답은 다음과 같이 말합니다 : "당신도 유지하려면 ? "-분명히 문자열에 물음표가 있어야합니다 ..
patad

이상한, 내 의견은 @Imran의 다른 대답을위한 것 같습니다. 내가 왜 당신의 답변에 게시했는지 모르겠습니다.
Stephan Bijzitter

1

파티가 매우 늦을 수 있음 : p

역 참조 $ '를 사용할 수 있습니다

$' - Inserts the portion of the string that follows the matched substring.

let str = "/Controller/Action?id=11112&value=4444"

let output = str.replace(/\?.+/g,"$'")

console.log(output)


1

그것은 나를 위해 아주 잘 작동합니다 :

var x = '/Controller/Action?id=11112&value=4444';
var remove_after= x.indexOf('?');
var result =  x.substring(0, remove_after);
alert(x);

0

나를 위해 일했다 :

      var first = regexLabelOut.replace(/,.*/g, "");

-1

참조를 위해 JavaScript를 사용하여 쉽게 수행 할 수 있습니다. 링크 JS 문자열 참조

그것은 쉽게 할 수있는 편집. ;)

var url="/Controller/Action?id=11112&value=4444 ";
var parameter_Start_index=url.indexOf('?');
var action_URL = url.substring(0, parameter_Start_index);
alert('action_URL : '+action_URL);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.