You have to use negative index in String.prototype.slice() function.
- using negative index as first argument returns the sliced string to the 6 elements counting from the end of the string.
var example = "javascript";
console.log(example.slice(-6));
- using negative index as the second argument returns the sliced string from 0 to the 6th element counting from the end. It's opposite to the first method.
var example = "javascript";
console.log(example.slice(0, -6));
In your particular case, you have to use the second method.
console.log('11001000000000000001010'.slice(0, -18));
console.log('110000000001101011100'.slice(0, -18));
If you want to read more about that function, visit: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice
Answer from kind user on Stack OverflowWhy do we have a String.slice() method in JS ?
Help with String Slice - total beginner
javascript - What is the difference between String.slice and String.substring? - Stack Overflow
If you could only use string.slice or string.substring, which string method would you choose?
Videos
Why do we have a String.slice() method in JS ? Doesn't String.substring() method do the same thing ?
slice() works like substring() with a few different behaviors.
Syntax: string.slice(start, stop);
Syntax: string.substring(start, stop);
What they have in common:
- If
startequalsstop: returns an empty string - If
stopis omitted: extracts characters to the end of the string - If either argument is greater than the string's length, the string's length will be used instead.
Distinctions of substring():
- If
start > stop, thensubstringwill swap those 2 arguments. - If either argument is negative or is
NaN, it is treated as if it were0.
Distinctions of slice():
- If
start > stop,slice()will return the empty string. ("") - If
startis negative: sets char from the end of string, exactly likesubstr(). - If
stopis negative: sets stop to:string.length – Math.abs(stop)(original value), except bounded at 0 (thus,Math.max(0, string.length + stop)) as covered in the ECMA specification.
Source: Rudimentary Art of Programming & Development: Javascript: substr() v.s. substring()
TL;DR:
- If you know the index (the position) on which you'll stop (but NOT include), use
slice(). - If you know the length of characters to be extracted, you could use
substr(), but that is discouraged as it is deprecated.
Otherwise, read on for a full comparison
Syntax
string.slice(start,end)string.substr(start,length)string.substring(start,end)
Note #1: slice()==substring()
What it does?
slice()extracts parts of a string and returns the extracted parts in a new string.substr()extracts parts of a string, beginning at the character at the specified position, and returns the specified number of characters.substring()extracts parts of a string and returns the extracted parts in a new string.
Note #2: slice()==substring()
Changes the Original String?
slice()doesn'tsubstr()doesn'tsubstring()doesn't
Note #3: slice()==substr()==substring()
Using Negative Numbers as an Argument
slice()selects characters starting from the end of the stringsubstr()selects characters starting from the end of the stringsubstring()doesn't perform
Note #4: slice()==substr()
If the First Argument is Greater than the Second
slice()doesn't performsubstr()since the Second Argument is NOT a position, but length value, it will perform as usual, with no problemssubstring()will swap the two arguments, and perform as usual
The First Argument
slice()required; starting Indexsubstr()required; starting Indexsubstring()required; starting Index
Note #5: slice()==substr()==substring()
The Second Argument
slice()optional; the position (up to, but not including) where to end the extractionsubstr()optional; the number of characters to extractsubstring()optional; the position (up to, but not including) where to end the extraction
Note #6: slice()==substring()
What if the Second Argument is Omitted?
slice()selects all characters from the start-position to the end of the stringsubstr()selects all characters from the start-position to the end of the stringsubstring()selects all characters from the start-position to the end of the string
Note #7: slice()==substr()==substring()
So, you can say that there's a difference between slice() and substr(), while substring() is basically a copy of slice().
If you want substr's functionality:
"foobarbaz".substr(index, length);
without using a deprecated feature, you can just do:
"foobarbaz".substring(index, length + index);
And get the exact same results bar all of the edge-cases, like negative index/length.