js 字符串截取,去掉后几位,保留前几位,请教各位??

实际项目中,文件上传时,在文件名后面拼了13位时间戳,但是在显示的时候,要求只显示文件名,把后面13位的时间戳去掉。
例如:a='abc1234567890',怎么去掉后面固定的10位,只保留前面abc

阅读 5.4k
3 个回答

这个简单,字符串反向截取。

var a='abc1234567890'

var b = a.slice(0,-10)
console.log(b) // abc

没有额外条件的话没法处理,文件名本身结尾就带数字怎么办?

abc1111234567890,你说这个时间戳到底是 111123456789011123456789011234567890 还是 1234567890 呢?

要么就得有隐式的条件,即认为时间戳只可能是 13 位(看起来你们用的是毫秒级的),13 位是从 2001-09-09 09:46:40 起、到 2286-11-21 01:46:39 为止,一般情况下也够满足了。

那简单的字符串截断就好了,都用不上正则:

let str = 'abc11111636954398000';
let res = str.substring(0, str.length - 13); // 'abc1111'

正则也行:

let str = 'abc11111636954398000';
let res = str.replace(/(\w*)\d{13}$/, '$1');

P.S. 题目里咋一会儿 13 位、一会儿 10 位?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题