Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Подсчитать количество целых чисел в текстовом файле (http://forum.oszone.net/showthread.php?t=308564)

vadmilionikus73 29-11-2015 17:31 2579864

Подсчитать количество целых чисел в текстовом файле
 
нужно создать командный файл. Подсчитать количество целых чисел в текстовом файле. Считать, что слова в файле записаны в формате ОДНО СЛОВО В СТРОКЕ. Слово – это целое число (состоящее из десятичных цифр) или последовательность букв латинского алфавита (начинающаяся с буквы). Имя файла задается первым параметром командного файла.

greg zakharov 01-12-2015 10:06 2580274

Очевидно, далеко не все условия описаны, ибо число может быть знаковым - это раз; во-вторых, можно только догадываться относительно вещественных чисел:
Код:

<# :
  @echo off
    for %%i in (powershell.exe) do if not exist "%%~$PATH:i" (
      echo:PowerShell has not been found.&exit /b
    )
    powershell /nop /ex bypass^
    "&{[ScriptBlock]::Create((gc '%~f0') -join [Char]10).Invoke(@(&{$args}%*))}"
  exit /b
#>
if ($args.Length -ne 1) {
  Write-Warning "only one file can be processed at a time."
  break
}

([Regex]'[+-]?(?<!\.)\b\d+\b(?!\.\d+)').Matches((gc (cvpa $args[0]))).Count

А теперь нарисуем какой-нибудь абра-кадабра файл:
Код:

The first string. It contains 10.11, the float number.
The second string contains -13, it's the signed integer number.
The third string contains unsigned integer number - 10000.
PI number is 3,14159265358979 (separated with comma).
And last number is 13.

Результатом работы командного файла выше будет 5. Почему? Все просто, знаки числа ПИ разделены запятой, регулярное выражение будет считать его за два целых числа.

Foreigner 01-12-2015 11:29 2580293

greg zakharov, По правилам грамматики после знака препинания должен быть пробел.
vadmilionikus73, Смахивает на домашнее задание
Код:

@echo off
setlocal

for /f "tokens=*" %%i in ('findstr "^[0-9]$ ^[1-9][0-9]*$" %1') do set /a cnt+=1
echo %cnt%


greg zakharov 01-12-2015 12:22 2580308

Цитата:

Цитата Foreigner
По правилам грамматики после знака препинания должен быть пробел.

Исходя из правил и логики много чего должно быть, например, не должно быть платы за капремонт и надбавок за горячую воду при наличии установленных счетчиков на нее, в противном случае это - коммунизм. Ко всему прочему нельзя исключать человеческий фактор - очепятка и дыр и пыр, так что поиск целых чисел в текстовике без множественного уточнения не есть хорошо.

Foreigner 01-12-2015 14:11 2580345

greg zakharov,
Цитата:

слова в файле записаны в формате ОДНО СЛОВО В СТРОКЕ
Слово – это целое число (состоящее из десятичных цифр) или последовательность букв латинского алфавита (начинающаяся с буквы)
И где здесь вообще запятые, точки и т.д.?


Время: 07:56.

Время: 07:56.
© OSzone.net 2001-