我试图在字符串中的最后一个下划线之后提取第一个字符,字符串中包含未知数量的'_',但在我的情况下总会有一个,因为我在该过程的另一个步骤中添加了它。
我试过的是这个。我也尝试了正则表达式从名称中提取,但我的结果是空的。
var s = "XXXX-XXXX_XX_DigitalF.pdf"
var string = match(/[^_]*$/)[1]
string.charAt(0)
所以最终的期望结果是'D'。如果RegEx只能告诉我最后'_'背后的内容,那很好,因为我知道我可以使用当前显示的charAt。但是,如果正则表达式可以完成整个事情,甚至更好。
答案 0 :(得分:2)
如果你知道总会有至少一个下划线你可以这样做:
var s = "XXXX-XXXX_XX_DigitalF.pdf"
var firstCharAfterUnderscore = s.charAt(s.lastIndexOf("_") + 1);
// OR, with regex
var firstCharAfterUnderscore = s.match(/_([^_])[^_]*$/)[1]
使用正则表达式,您可以使用括号仅提取一个字母来捕获匹配的那一部分。但我认为.lastIndexOf()
版本更容易阅读。
无论哪种方式,如果输入中没有下划线,您需要添加一些额外的逻辑。