Я пытаюсь получить последнюю строку (с правой стороны) ячеек в столбце, но не могу понять.
У меня есть этот код, который будет получать первые три цифры с левой стороны, но да, это не сработает.
var first_3_digs = values.filter(r => {
if(r.toString().includes('_')){return r;}
}).map(r=> r.toString().split('_')[0]);
Например, если я хочу в качестве ввода CS_1 * 44u, я хочу, чтобы вывод u. То же самое для мл, л и т.д.
Если вам нужна дополнительная информация, дайте мне знать.
Большое спасибо за помощь.
2 ответа
Пример, как получить «единицы» из нескольких ячеек:
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', ''
Пример, как получить «единицу» из одной ячейки:
const unit = x => /[\d]+[\D]+/.test(x) ? x.match(/[A-z]+$/)[0] : '';
var cell_value = 'CS_1*44u';
console.log(unit(cell_value)); // --> 'u'
Если вам нужно получить массив «единиц» из другого массива ячеек, вы можете отобразить функцию следующим образом:
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]*$
ПОСЛЕДНЯЯ цифра (с десятичной запятой или без):
(\d+(\.\d+)?)(?!.*\d+(\.\d+)?)
[РЕДАКТИРОВАТЬ]
Где \d
означает число, вот (более короткая) альтернатива, которая также протестирована как работающая с тем же набором данных:
=REGEXEXTRACT(K1,"[^\d]*$")
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.