如何仅从一列中的单元格中获取最后一个字符串

How to get only the last string from cells in one column

我正在尝试获取列中单元格的最后一个字符串(从右侧开始),但我无法弄明白。

我有这段代码可以从左侧获取前三位数字,但是不行。

var first_3_digs = values.filter(r => {
                                                                                    if(r.toString().includes('_')){return r;}
                                                                                }).map(r=> r.toString().split('_')[0]);

例如,如果我想要作为输入 CS_1*44u 我想要输出 u。同样适用于 ml、l 等...

如果您需要更多信息,请告诉我。

非常感谢您的帮助。

如何从多个单元格中获取 'units' 的示例:

const unit = x => /[\d]+[\D]+/.test(x) ? x.match(/[A-z]+$/)[0] : '';

var texts = ['CS_1*44u', 'Case', '72x64ml', '11x37kg', '123'];

texts.forEach(x => console.log(unit(x))); // --> 'u', '', 'ml', 'kg', ''

如何从一个单元格中获取 'unit' 的示例:

const unit = x => /[\d]+[\D]+/.test(x) ? x.match(/[A-z]+$/)[0] : '';

var cell_value = 'CS_1*44u';

console.log(unit(cell_value)); // --> 'u'

如果您需要从另一个单元格数组中获取 'units' 的数组,您可以这样映射函数:

const unit = x => /[\d]+[\D]+/.test(x) ? x.match(/[A-z]+$/)[0] : '';

var cells = ['CS_1*44u', 'Case', '72x64ml', '11x37kg', '123'];

var units = cells.map(x => unit(x)); // <---- here

console.log(units); // --> ['u', '', 'ml', 'kg', '']

由于您已为可能的解决方案标记了公式,我将提供以下 REGEXEXTRACT 公式:

=REGEXEXTRACT(K1,"[^(\d+(\.\d+)?)(?!.*\d+(\.\d+)?)]*$")

说明:

最后一次出现“a”之后:

[^a]*$

最后一位(带或不带小数点):

(\d+(\.\d+)?)(?!.*\d+(\.\d+)?)

[编辑]

其中 \d 表示一个数字,这是一个(更短的)替代方案,它也被测试为使用相同的数据集:

=REGEXEXTRACT(K1,"[^\d]*$")