Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Подсчет символов разных языков в мультиязычных файлах

Ответить
Настройки темы
PowerShell - [решено] Подсчет символов разных языков в мультиязычных файлах

Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте!
Как получить количество, скажем, русских символов в двуязычной строке
Пример
‘строкасодержащаяenglishsymbol’.lenRU и результат 15
‘строкасодержащаяenglishsymbol’.lenEN и результат 13

В идеале скрипт должен считать количество символов каждого языка в мультиязычных файлах, но эту часть я знаю как создать, а о подсчет спотыкаюсь

Отправлено: 14:49, 05-03-2017

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
([char[]]'строкасодержащаяenglishsymbol' -match "[а-я]").count

Отправлено: 15:05, 05-03-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Токмо шаблон чуть ширше — [а-яё], поскольку ё выпадает за границы от а до я.

Отправлено: 15:13, 05-03-2017 | #3


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Цитата Iska:
Токмо шаблон чуть ширше — [а-яё], поскольку ё выпадает за границы от а до я.
А еще лучше \p{IsCyrillic}. Почему? Есть вероятность, что при задании шаблона [а-яё] может быть введена латинская a, и тогда, например, в строке 'съеш ещё этих мягких французских булок, да выпей чаю! /dev/null' итог будет равным 50, а не 43 как положено, поэтому использование \p{IsCyrillic} более предпочтительно.

Отправлено: 17:02, 05-03-2017 | #4


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Вложения
Тип файла: txt in.txt
(86 байт, 4 просмотров)

Спасибо!


Код: Выделить весь код
$lines = Get-Content 'C:\powershell\in.txt'
$len = $lines.length

выдает $len=3 на вложенном файле.

Как это? Вроде ожидать надо количество символов, а не строк

Отправлено: 17:04, 05-03-2017 | #5


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Дык если в файле три строки, что Вы ожидаете увидеть, десять? Get-Content по уолчанию считвает файл как массив строк, отсюда и количество строк, а не символов.

Отправлено: 17:07, 05-03-2017 | #6


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Символы нужны
По строкам считать в цикле или есть проще способ?

Отправлено: 17:08, 05-03-2017 | #7


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Ну дык используйте measure:
Код: Выделить весь код
Get-Content in.txt | Measure-Object -Character

Отправлено: 17:10, 05-03-2017 | #8


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Круть! )
Как это совместить теперь с -match "[а-я]"?
Код: Выделить весь код
$lines = Get-Content 'C:\powershell\in.txt'
$len = $lines.length
$lenRU = ($lines -match "[а-я]") | Measure-Object -Character 
$len = $lines.length
Получилось! Осталось только сообразить как считать не символы в строках, содержащих русские буквы, а именно количество букв

Последний раз редактировалось Nikolay_Karetnikov@vk, 05-03-2017 в 17:20.


Отправлено: 17:14, 05-03-2017 | #9


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата greg zakharov:
Есть вероятность, что при задании шаблона [а-яё] может быть введена латинская a, »
Ну, это навряд ли.

Указанное Вами идеологически более верное — вроде как факт. Но дело в том, что туда попадут все символы из набора 0400 - 04FF, т.е.:
Скрытый текст

а не только буквы русского алфавита от а до я. А оно нам надо? Вопрос риторический.

Отправлено: 17:28, 05-03-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Подсчет символов разных языков в мультиязычных файлах

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Подсчет символов в строке 31echo_echo@vk Программирование и базы данных 1 14-11-2016 00:45
CMD/BAT - [решено] Подсчет совпадающих строк в разных файлах Elven Скриптовые языки администрирования Windows 5 01-09-2014 10:08
2010 - MS Outlook 2010 сохраняет ли контакты для разных пользователей в разных профайлах? gavBTR Microsoft Office (Word, Excel, Outlook и т.д.) 0 27-03-2011 20:13
Замена одной фразы в разных файлах Punsher Программное обеспечение Linux и FreeBSD 3 11-03-2008 13:24
запуск разных программ для разных пользователей при загрузке schumi Microsoft Windows 2000/XP 2 06-01-2006 22:36




 
Переход