let str = ‘aaa@bbb@c@@cc’
//Должно вывести 4
задан 27 янв в 13:24
16
'aaa@bbb@c@@cc'.match(/@/g).length
'aaa@bbb@c@@cc'.split('').filter(s => s === '@').length
const getNumberSymbolOccurrences = (str, find) =>
str?.split('').filter(s => s === find).length ?? 0
// циклом
const getNumberSymbolOccurrences = (str, find) => {
if (!str || !find) {
return 0
}
let result = 0
for (const s of str) {
if (s === find) {
result += 1
}
}
return result
}
/* зависит от требований, но если такая функция используется в
приложении, то
функция должна кидать исключение, если не передан какой либо из
аргументов. Это делается для того что бы вызывающий код знал об
ошибке и смог ее обработать.
if (!str || !find) throw new Error('message')
/*
4
Задание: найти в тексте первые 5 слов, состоящих из пяти букв. Какую формулу ввести в форму поиска? Например если текст содержит только кириллицу, то под словом понимаем последовательность из набора символов в диапазоне от а до я количество символов равно 5 начиная с начала слова и заканчивая концом слова на языке подстановочных знаков начало слова обозначается символом < конец слова обозначается символом > набор символов обозначается скобками [] диапазон обозначается символом – количество символов обозначается скобками {n;m}, где n мин. ,а m -макс. количество если строка должна содержать только 5 символов то можно записать {5} формула поиска будет такая <[а-я]{5}> для текста на латинице <[a-z]{5}> Обязательно надо поставить галочку Подстановочные знаки, а то ничего не выйдет. автор вопроса выбрал этот ответ лучшим MaxFer 6 лет назад С подстановочными знаками можно поэкспериментировать. Все они перечислены на странице поддержки MS Office в разделе о работе с Word. Если ввести в форму поиска пять вопросительных знаков “?????”, то система выдаст очень плачевную картину, потому что во-первых, без указания границ слова результат выделит слова с этими пятью знаками в середине слова и во-вторых, среди вопросительных знаков могут быть пробелы. Даже если по краям установить угловые скобки “<?????>”, то избежать попадания пробела в середину слова не удастся. Так что поиск с вопросительными знаками отметаем. Тогда нужно брать подстановочные знаки. Границы слова отметить нужно обязательно – “<” и “>”. Далее можно попробовать ввести любой символ в диапазоне от “а” до “я” пять раз. Получим вот такую формулу: “<[а-я][а-я][а-я][а-я][а-я]>”. Есть и более экономичный вариант, если указать количество символов (кроме пробелов) после заданного знака с помощью фигурных скобок. А этот заданный знак в диапазоне от “а” до “я”. (Если указать просто знак, то количество этих повторяющихся знаков будет 5 и нет гарантий, что в тексте есть слово с одинаковыми пятью буквами). И не забудем про границы слова Итак, формула – “<[а-я]{5}>”. Количество букв в слове будет равно 5, а буква может быть любой в диапазоне от “а” до “я”. владсандрович 4 года назад В том случае, если нужно любое слово с любым количеством букв, и последних и последних в их количестве должно быть лишь пять, то проделывается такое задание следующим способом: Выберите в меню – Главная, после чего переходите на графу – Найти или производите поиск, за счет комбинации клавишь Ctrl + H; Нажимаете кнопку – Больше. После чего вам необходимо убедиться в том что значка возле пункта – Подстановочные знаки больше нет. Вариант который вы должны будете выбрать это – Везде, что бы поиск был тотальным и затрагивал весь документ. Введите в строку предназначенную для поиска такой набор символов как – ^$. При этом так как нам необходимо произвести нахождение слова в пять знаков, то и вводить его нужно в количестве пяти раз, причем в чистом виде. Дальше вы активизируете функцию – Найти. При этом такая процедура требует повторения до тех пор, пока вы не найдете все слова. Если задание найти любое слово из любых букв, при этом последних должно быть только пять, то сделать это просто:
Знаете ответ? |
In case you are interested in performance, and would like to implement a slightly more complicated approach, I mocked up some data and did a relative simple test:
CREATE TABLE dbo.Test
(
TestID INT NOT NULL CONSTRAINT PK_Test
PRIMARY KEY CLUSTERED IDENTITY(1,1)
, col1 VARCHAR(255) NOT NULL
, col1_comma_count AS LEN(col1) - LEN(REPLACE(col1, ',','')) PERSISTED
);
INSERT INTO Test (col1) VALUES ('this, is, a, test');
GO 50000
INSERT INTO Test (col1) VALUES ('this, is, a, test, another, test');
GO 1500
The statements above create a test table with a computed column that contains the count of the number of commas in col1
. The table then has 50,000 rows inserted where the comma count is 3, and 1,500 rows inserted where the comma count is 5.
I then executed the following query, with SET STATISTICS IO ON; SET STATISTICS TIME ON;
:
SELECT COUNT(1)
FROM dbo.Test t
WHERE t.col1_comma_count = 5;
The statistics info:
As you can see, 248 logical reads are necessary to scan the entire table to obtain the count of rows where 5 commas. The execution plan for this query looks like:
As expected, SQL Server does a clustered index scan of the entire table.
I then created an index on the persisted computed column, to show the difference:
CREATE INDEX IX_Test_col1_comma_count ON dbo.Test (col1_comma_count);
and re-ran the test query. Here are the statistics info for the run with the index:
The number of reads necessary has dropped to 6, or 41 times less reads. On a busy system this will make a real difference. Here is the new execution plan:
This time, we see a much more efficient seek into the index.
If we drop both the index and the computed column from the table, we see a huge increase in time spent getting the results of the query:
DROP INDEX IX_Test_col1_comma_count ON dbo.Test;
ALTER TABLE Test DROP COLUMN col1_comma_count;
SELECT COUNT(1)
FROM dbo.Test t
WHERE LEN(col1) - LEN(REPLACE(col1, ',','')) = 5
STATISTICS TIME ON
shows a value on my computer (an Intel Core-i7 3.4Ghz with 8GB ram) of SQL Server Execution Times: CPU time = 15 ms, elapsed time = 24 ms.
With the index and computed, persisted column in place, the SQL Server execution times are SQL Server Execution Times: CPU time = 0 ms, elapsed time = 2 ms.
Clearly, there is a price to pay for doing string manipulation in the WHERE
clause.
Выполните поиск только в одном столбце, затем выделите все ячейки в этом столбце более чем (числом) символов, поэтому я меняю данные по одному?
Спасибо.
Его номер телефона, тысячи из них, многие набраны неправильно, по крайней мере, 100, я пытаюсь найти их напрямую, не просматривая их все
Я понимаю ваш вопрос так: вы хотите отредактировать все ячейки, которые содержат более X
символов.
Самый простой способ сделать это – в соседнем столбце использовать функцию LEN
для вычисления длины символов.
Затем выделите оба столбца и нажмите на фильтр (Data --> Filter
). Отфильтруйте второй столбец, чтобы отобразить только те строки, у которых номера больше X
В Excel 2010 этот параметр скрыт в меню « Number Filters
.
Наконец, отредактируйте первый столбец по желанию.
Если вы хотите выделить ячейки, содержащие более X символов, вы можете использовать Conditional formatting
и функцию LEN()
.
Например: вы хотите выделить все ячейки в столбце A, содержащие более X символов.
- Выберите столбец A
- Нажмите на кнопку условного форматирования -> Новое правило
- В диалоге выбрал последний вариант (что-то вроде пользовательской формулы)
- Заполните формулу
=LEN(A1)>X
(X – любое целое число больше 0) - Установить формат для выделения
См. Справку Excel для лучшего понимания.
PS: у меня нет английской версии Excel, поэтому некоторые имена могут немного отличаться.
Я только что сделал это, и я думаю, что главный ответ правильный, но не очень хорошо объясненный.
Если у вас есть столбец (скажем, “C”), полный данных, начиная со строки 3, и вы хотите, чтобы все ячейки были выделены более чем 15 символами, выберите первую ячейку в списке и:
- Перейти к условному форматированию> новое правило.
- Выберите «Использовать формулу, чтобы решить, какие ячейки отформатировать»
- Тип: = Len(C3)> 15, выберите формат (цвет и т.д.)
- Хит “ОК”.
Затем выберите ячейку C3 правой кнопкой мыши, перетащите курсор вниз по всему столбцу данных и выберите “Fill Formatting”.
Это должно сделать это.
Я не знаю ни одного простого решения, я бы сделал:
Рассчитайте длину текста в новом столбце, затем примените условное форматирование в исходном столбце на основе данных в новом столбце.
Поиск слова (значения) по количеству символов из текста |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |