Dejan.S
Dejan.S

Reputation: 19138

Remove everything after a certain character

Is there a way to remove everything after a certain character or just choose everything up to that character? I'm getting the value from an href and up to the "?", and it's always going to be a different amount of characters.

Like this

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

I want the href to be /Controller/Action only, so I want to remove everything after the "?".

I'm using this now:

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

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

     console.log(url);
 }

Upvotes: 434

Views: 600899

Answers (10)

Shahnad S
Shahnad S

Reputation: 1167

if you add some json syringified objects, then you need to trim the spaces too... so i add the trim() too.

let x = "/Controller/Action?id=11112&value=4444";
let result =  x.trim().substring(0,  x.trim().indexOf('?'));  

Upvotes: 2

user17648256
user17648256

Reputation:

You can also use the split() method which, to me, is the easiest method for achieving this goal.

For example:

let dummyString ="Hello Javascript: This is dummy string"
dummyString = dummyString.split(':')[0]
console.log(dummyString)
// Returns "Hello Javascript"
Source: https://thispointer.com/javascript-remove-everything-after-a-certain-character/

Upvotes: 7

Code Maniac
Code Maniac

Reputation: 37755

May be very late party :p

You can use a back reference $'

$' - 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)

Upvotes: 13

Samina Zahid
Samina Zahid

Reputation: 71

It works for me very nicely:

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

Upvotes: 7

Demian Brecht
Demian Brecht

Reputation: 21368

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

Sample here

I should also mention that native string functions are much faster than regular expressions, which should only really be used when necessary (this isn't one of those cases).

Updated code to account for no '?':

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

Sample here

Upvotes: 536

patad
patad

Reputation: 9672

If you also want to keep "?" and just remove everything after that particular character, you can do:

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

// output: /Controller/Action?

Upvotes: 5

user1786058
user1786058

Reputation:

Worked for me:

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

Upvotes: 0

kapa
kapa

Reputation: 78691

You can also use the split() function. This seems to be the easiest one that comes to my mind :).

url.split('?')[0]

jsFiddle Demo

One advantage is this method will work even if there is no ? in the string - it will return the whole string.

Upvotes: 611

Imran
Imran

Reputation: 3024

It can easly be done using JavaScript for reference see link JS String

EDIT it can easly done as. ;)

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);

Upvotes: -1

James Kyburz
James Kyburz

Reputation: 14453

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

This will work if it finds a '?' and if it doesn't

Upvotes: 40

Related Questions