@KTG

Как посчитать количество разделителей в строке?

Есть строка
значение1^значение2^значение3^
Как посчитать количество разделителей?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
@KTG Автор вопроса
FOR /F %%N IN ('">$ cmd/v/c echo.!var!& echo $"') DO (
							SET /a length=%%~zN-2& del $
						)
						SET parts_cnt=0
						FOR /L %%V IN (0,1,!length!) DO (
							SET symb=!var:~%%V,1!
							IF !symb! == ^^ (
								SET /A parts_cnt += 1
							)							
						)


Исключая само понимание условия первого цикла, всё просто.
Считаем количество символов, что бы поставить максимальное значение в числовой цикл, который генерирует стартовую позицию для извлечения подстроки длиной в 1 символ.
Можно было не считая длину строки подставлять просто больше число.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Символ крышки ^ является "специальным" для cmd. Так что его не стоит использовать в качестве разделителя, если вы планируете решать задачу на батниках.
Вообще вашу задачу можно решить так:
@echo off

set "str=hjh#jhjh#hkjh#khkjh##khkjh"
set "delim=#"
set "count=0"

:loop
call:finddelims
if defined str goto:loop
echo.%count%
goto:eof

:finddelims
for /f "tokens=1,* delims=%delim%" %%a in ("%str%") do (
	echo.%%a
	set /a "count+=1"
	set "str=%%b"
)

Тут я выбрал разделителем символ #, строку задал в переменной str произвольную с разделителями.
Двойной разделитель считается как 1. Разделитель стоящий в конце строки не учитывается.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы