RegEx не так сложны, как вам кажется.
Перевод статьи «Regular Expressions Demystified: RegEx isn’t as hard as it looks».
Сборка
Перевод статьи «Regular Expressions Demystified: RegEx isn’t as hard as it looks».
Сборка
freeCodeCamp.org
Regular Expressions Demystified: RegEx isn’t as hard as it looks
By Vijayabharathi Balasubramanian Are you one of those people who stays away from regular expressions because it looks like a foreign language? I was one. Not anymore. Think of all those sounds, traffic signs and smells that you can recognize. Regula...
Forwarded from volond
Используя функцию из этого поста
https://t.me/google_sheets/530
И добавив бонус
https://t.me/google_sheets/530
И добавив бонус
/** Декартово произведение двух диапазонов
* https://t.me/google_sheets – наш канал про Таблицы Google и скрипты :)
* @param Первый диапазон
* @param Второй диапазон
* @return
* @customfunction
*/
function RENE(range1, range2){
return [].concat(...range1.map(y => [].concat(...[range2.map(h => [y[0], h[0]])]))).filter(t => t[0]);
}
function alphabet(){
return [...Array(26)].map((_, y) => String.fromCharCode(y + 65)).join('')
}
function alphabetArr(){ return [...alphabet()]}
function alphabetRENEJOIN(range){ return range.map(e=>e.join(''))}
Комбинируя в формуле={alphabetArr();alphabetRENEJOIN(RENE(alphabetArr();alphabetArr()));alphabetRENEJOIN(RENE(alphabetRENEJOIN(RENE(alphabetArr();alphabetArr()));alphabetArr()))}
Получаем все сочетания от A до ZZZ/*
Использование функций генератора JavaScript для диапазонов
Создание генератора диапазонов,подобного диапазонам Python или Ruby
*/
Использование функций генератора JavaScript для диапазонов
Создание генератора диапазонов,подобного диапазонам Python или Ruby
*/
const range = (end, start = 0, step = 1) => {
function* generateRange() {
let x = start - step;
while(x < end - step) yield x += step;
}
return {
[Symbol.iterator]: generateRange
};
}
console.log([...range(7)]); // [0, 1, 2, 3, 4, 5, 6]
for (let i of range(8, 2, 2)) console.log(i); // Logs: 2, 4, 6
#JS #function #arrayИзучаю замену условным конструкциям в JavaScript
В этой статье рассказывается о том как писать условные конструкции лучше,
чем вы к этому скорее всего привыкли и наглядно, на примерах показывается,
как это делать в сравнении с обычными методами.
читать ...
В этой статье рассказывается о том как писать условные конструкции лучше,
чем вы к этому скорее всего привыкли и наглядно, на примерах показывается,
как это делать в сравнении с обычными методами.
читать ...
Telegraph
Изучаю замену условным конструкциям в JavaScript
Перевод статьи 5 Tips to Write Better Conditionals in JavaScript // условие function test(fruit) { if (fruit == 'apple' || fruit == 'strawberry') { console.log('red'); } } На первый взгляд пример выше выглядит вполне хорошо. Однако, что если у нас будет больше…
Первая статья цикла
Object.assign VS Spread
"Когда вам нужно использовать Object.assign"
Я хотел бы добавить этот простой пример, когда вам нужно использовать Object.assign.
Object.assign VS Spread
"Когда вам нужно использовать Object.assign"
Я хотел бы добавить этот простой пример, когда вам нужно использовать Object.assign.
class SomeClass {
constructor() {
this.someValue = 'some value';
}
someMethod() {
console.log('some action');
}
}
var e = () => {
const objectAssign = Object.assign(new SomeClass(), {});
objectAssign.someValue; // ok
objectAssign.someMethod(); // ok
const spread = {...new SomeClass() };
console.log(spread.someValue); // ok
console.log(spread.someMethod()); // Error:spread.someMethod is not a function! there is no methods of SomeClass!
}Вторая статья цикла
Object.assign VS Spread
Когда вам нужно использовать Object.assign. тут
А также научимся получать имя объекта из самого объекта
Превращать строковое имя объекта в сам объект
Скрывать свойства и методы объекта из перечисляемых свойств
Объединять объекты в один
Object.assign VS Spread
Когда вам нужно использовать Object.assign. тут
А также научимся получать имя объекта из самого объекта
Превращать строковое имя объекта в сам объект
Скрывать свойства и методы объекта из перечисляемых свойств
Объединять объекты в один
var USER = {
['b']: 'b',
['getName']: () =>"USER",
}
var MSG = {
['a']: 'a',
['getName']: () => "MSG",
}
var f=()=>{
//Получаем из строки имен обьектов разделенных запятыми эти обьекты как объекты JS
var string = 'USER,MSG'
var objs = string.split(",").map(el => eval(el)) //
// Скрываем в этих обьектах метод getName
const enumerableProperty = (property, obj) => obj => Object.defineProperty(obj, property, { enumerable: false });
const enumerableGetName = enumerableProperty('getName')
objs.forEach(enumerableGetName)
objs.forEach(el => console.log(Object.keys(el)));
//Обьеденяем в один обьект
var asassignObj=objs.reduce((total,el)=>{
total=Object.assign({},total,el);
return total
},{});
console.log(asassignObj)
}‼️Стань быстрее с доменом .NEW‼️
💣ПРОСТО ПРИПИНЬ ЭТО СООБЩЕНИЕ💣
https://doc.new
https://sheet.new
https://slides.new
https://form.new
https://keep.new
https://site.new
https://meet.new
https://cal.new
Ваши Скрипты
Статус работы сервисов Google
all.new
💣ПРОСТО ПРИПИНЬ ЭТО СООБЩЕНИЕ💣
https://doc.new
https://sheet.new
https://slides.new
https://form.new
https://keep.new
https://site.new
https://meet.new
https://cal.new
Ваши Скрипты
Статус работы сервисов Google
all.new
function PIB(text) {
if(!Array.isArray(text)){text=[[text]]}
//var text=[['А.В. Петров.'],['С.А. Васильев, И. Г. Безфамильный']]
text=text.filter(e=>!!e[0])
var ws=text.map(q=>q[0].split(","))
var f=(m)=>m.split(".").map(s=>s.trim()).filter(el=>!!el)
var z=(z)=>{
var [a,b,c]=f(z)
return [c,[a+".",b+"."].join(' ')].join(" ")
}
var res=ws.map(r=>[r.map(u=>z(u)).join(",").trim()])
console.log(res)
return res
}//Пример удаления задвоеных пробелов и пробелов в начале и конце в JavaScript:
Text=' иванов сергей иванович '
Text = Text.replace(/ {1,}/g," ").trim();
//Пример удаления разрывов строк в JavaScript:
Text = Text.replace(/(\r\n|\n|\r)/gm," ");
console.log(Text);
//Text='иванов сергей иванович'
console.log(Text.split(" ").map(word=>{
var [ferst,...rest]=[...word]
return [ferst.toUpperCase(),rest.join('').toLowerCase()].join('')
}).join(' '))
//return Иванов Сергей Иванович
//Text='иванов сергей иванович'
console.log(Text.split(" ").map((word,i)=>{
var [ferst,...rest]=[...word]
return i?[ferst.toUpperCase()+'.']:[ferst.toUpperCase(),rest.join('').toLowerCase()].join('')
}).join(' '))
//return Иванов С. И.
var Text='Иванов С. И.'
var [ferst,two,tree]=Text.split(" ");
Text= [two,tree,ferst].join(' ')
console.log(Text)
//return С. И. ИвановВыполнить что то по onEdit() в зависимости от имени листа
const sheet1=()=>console.log('sheet1')
const sheet2=()=>console.log('sheet2')
function onEdit(e){
var eNameSheet=e.range.getSheet().getName()
var sheetNameAction=['Sheet1','Sheet2']
var reduser={
['Аркуш1']:sheet1,
['Аркуш2']:sheet2,
}
reduser[eNameSheet]()
}Повторим каждое значения в столбце указанное количество раз
var range = [
[1],
[''],
[2]
]
var n = 3
const dublik = (n, range) => range.reduce((total, el) => {
if (el[0]) {
var temp = []
temp.length = n
total.push(temp.fill([el[0]]))
};
return total;
}, []).flat();
console.log(dublik(n, range));
//return [ [ 1 ], [ 1 ], [ 1 ], [ 2 ], [ 2 ], [ 2 ] ]Разделить текст после каждого n-го слова в Google Sheet (с помощью Regex и Split)
Логика:
1.Вставьте разделитель рыб после каждого n-го слова - используя REGEXREPLACE.
2.Разделите текст по разделителям рыбы - с помощью SPLIT.
3.Наконец, измените разделенные столбцы на строки - используя TRANSPOSE.
Логика:
1.Вставьте разделитель рыб после каждого n-го слова - используя REGEXREPLACE.
2.Разделите текст по разделителям рыбы - с помощью SPLIT.
3.Наконец, измените разделенные столбцы на строки - используя TRANSPOSE.
=TRANSPOSE(split(REGEXREPLACE(A1;"(([a-zA-Zа-яА-Я'‘’:.,_?!”“)(}{\]\[]+\s){5})"; "$1🐬");"🐬"))
