Rawland Hustle
Rawland Hustle

Reputation: 781

Extract text until second to last occurrence from string

How do I extract the text from the beginning until (not including) the second to last occurrence of a charachter (":" in this case) from a string? Preferably without using regex.

Examples:

"urn:riv:intygsbestallning:certificate:order:RequestPerformerForAssessmentResponder:1" should become "RequestPerformerForAssessmentResponder:1"

"urn:riv:itinfra:tp:PingResponder:1" should become "PingResponder:1"

Upvotes: 1

Views: 56

Answers (4)

Kaushal Sharma
Kaushal Sharma

Reputation: 2280

str = 'urn:riv:intygsbestallning:certificate:order:RequestPerformerForAssessmentResponder:1'

split_array = str.split(':')
ans = split_array.splice(-2).join(':')

console.log('ans', ans)

cut_off_part = split_array.join(':') + ':'
console.log('cut_off part', cut_off_part)
    

Another way of doing the same:

str = 'urn:riv:intygsbestallning:certificate:order:RequestPerformerForAssessmentResponder:1'

ans = str.split(':').splice(-2).join(':')
console.log("answer", ans)

cutoff_part = str.substr(0, str.length - ans.length)
console.log("cut_off_part", cutoff_part)

Upvotes: 1

Jorgeagb
Jorgeagb

Reputation: 31

I think this should work, I'm very sure that it is not the best code, but I am sure that you can improve it having it as a base, I hope it will be useful to you

var mainString = "urn:riv:itinfra:tp:PingResponder:1"
var inverseString = reverseString(mainString)
var result = getFinalString(inverseString)
console.log(result)
function reverseString(str){
    return str.split('').reverse().join('')
}
function getFinalString(str){
    var stringAux = str.split(':')
    if(stringAux.length>=2){
        finalString=reverseString(stringAux[0]+':'+stringAux[1])
        return finalString
    }
    return false
}

Upvotes: 0

abhishek sahu
abhishek sahu

Reputation: 648

const data1 = "urn:riv:intygsbestallning:certificate:order:RequestPerformerForAssessmentResponder:1";
const data2 = "urn:riv:itinfra:tp:PingResponder:1"

const arr = data1.split(':');
console.log(arr.splice(arr.length-2,arr.length).join(':'))

Upvotes: 1

Nick
Nick

Reputation: 1629

with split function you can parse your string returning an array of the tokens separated from the string in the parameter of split and later you can concatenate last two items in the array

let x = "urn:riv:intygsbestallning:certificate:order:RequestPerformerForAssessmentResponder:1";

let result = x.split(":");
let yourTextResult = `${result[result.length-2]}:${result[result.length-1]}`;
console.log(yourTextResult );

Upvotes: 1

Related Questions