Check if string begins with something?

JavascriptStringMatch

Javascript Problem Overview


I know that I can do like ^= to see if an id starts with something, and I tried using that for this, but it didn't work. Basically, I'm retrieving a URL and I want to set a class for an element for path names that start in a certain way.

Example:

var pathname = window.location.pathname;  //gives me /sub/1/train/yonks/459087

I want to make sure that for every path that starts with /sub/1, I can set a class for an element:

if (pathname ^= '/sub/1') {  //this didn't work... 
        ... 

Javascript Solutions


Solution 1 - Javascript

Use stringObject.substring

if (pathname.substring(0, 6) == "/sub/1") {
    // ...
}

Solution 2 - Javascript

String.prototype.startsWith = function(needle)
{
    return this.indexOf(needle) === 0;
};

Solution 3 - Javascript

You can use [string.match()][1] and a regular expression for this too:

if(pathname.match(/^\/sub\/1/)) { // you need to escape the slashes

string.match() will return an array of matching substrings if found, otherwise null.

[1]: http://www.w3schools.com/jsref/jsref_match.asp "string.match"

Solution 4 - Javascript

A little more reusable function:

beginsWith = function(needle, haystack){
    return (haystack.substr(0, needle.length) == needle);
}

Solution 5 - Javascript

First, lets extend the string object. Thanks to Ricardo Peres for the prototype, I think using the variable 'string' works better than 'needle' in the context of making it more readable.

String.prototype.beginsWith = function (string) {
    return(this.indexOf(string) === 0);
};

Then you use it like this. Caution! Makes the code extremely readable.

var pathname = window.location.pathname;
if (pathname.beginsWith('/sub/1')) {
    // Do stuff here
}

Solution 6 - Javascript

Have a look at JavaScript substring() method.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionn00b0101View Question on Stackoverflow
Solution 1 - JavascriptPhilip ReynoldsView Answer on Stackoverflow
Solution 2 - JavascriptRicardo PeresView Answer on Stackoverflow
Solution 3 - JavascriptCrosView Answer on Stackoverflow
Solution 4 - JavascriptRobKohrView Answer on Stackoverflow
Solution 5 - JavascriptTimView Answer on Stackoverflow
Solution 6 - JavascriptrochalView Answer on Stackoverflow