如何删除文本中第n个字符之前的字符串?

时间:2018-09-18 21:20:27

标签: javascript

我有一个动态生成的文本

xxxxxx-xxxx-xxxxx-xxxxx-Map-B-844-0

如何删除Map ...之前的所有内容?我知道有一种使用substring()的硬编码方式,但是正如我所说的那样,这些字符串是动态的,并且在Map ..可以更改之前,因此我需要通过删除{{1}之前的所有内容来动态地执行此操作} 4th个字符的索引。

4 个答案:

答案 0 :(得分:4)

您可以从字符串的开头删除所有四个减号和之间的字符。

var string = 'xxxxxx-xxxx-xxxxx-xxxxx-Map-B-844-0',
    stripped = string.replace(/^([^-]*-){4}/, '');
    
console.log(stripped);

答案 1 :(得分:3)

我只需要找到Map的索引并使用它来对字符串进行切片:

let str = "xxxxxx-xxxx-xxxxx-xxxxx-Map-B-844-0"
let ind = str.indexOf("Map")
console.log(str.slice(ind))

如果您更喜欢正则表达式(或者前缀中可能出现Map),则可以与所需的内容完全匹配:

let str = "xxxxxx-xxxx-xxxxx-xxxxx-Map-B-844-0"
let arr = str.match(/^(?:.+?-){4}(.*)/)
console.log(arr[1])

答案 2 :(得分:0)

我只会在Map一词上拆分并获得第一个索引

var splitUp = 'xxxxxx-xxxx-xxxxx-xxxxx-Map-B-844-0'.split('Map') var firstPart = splitUp[0]

答案 3 :(得分:0)

String.replace与正则表达式一起使用应该是流行的解决方案。

基于OP状态:so I need to do this dynamically by removing everything before 4th index of - character.

我认为另一个解决方案是首先使用split('-'),然后在第四个-之后加入字符串。

let test = 'xxxxxx-xxxx-xxxxx-xxxxx-Map-B-844-0'
console.log(test.split('-').slice(4).join('-'))