이 문제가 발생했습니다. 일종의 programm를 만들고 싶습니다. 모든 단어를 대문자로 바꿀 수 있습니다. = 무언가 -> 무언가를 되풀이해라; 무언가; 무언가 ... 무언가 ... 무언가 ... 무언가 ... 아이디어가 있으십니까?모든 소문자를 점진적으로 대문자로 변경하여 일괄 처리로 모든 조합을 가져옵니다.
0
A
답변
3
EDIT : 첫 번째 해결 방법은 공백과 같은 알파벳이 아닌 문자로 인한 반복 된 순열을 올바르게 관리하지 못한다는 것을 깨달았습니다. 아래의 배치 파일을 수정하여이 세부 사항을 수정했습니다.
@echo off
setlocal EnableDelayedExpansion
set /P "input=Enter input: "
rem Convert "input" into "upcase" and "lowcase", and create "letters" string
set upcase=%input%
set lowcase=%input%
set letters=
for %%a in ("a=A" "b=B" "c=C" "d=D" "e=E" "f=F" "g=G" "h=H" "i=I" "j=J" "k=K" "l=L" "m=M"
"n=N" "o=O" "p=P" "q=Q" "r=R" "s=S" "t=T" "u=U" "v=V" "w=W" "x=X" "y=Y" "z=Z") do (
set upcase=!upcase:%%~a!
for /F "tokens=1,2 delims==" %%b in (%%a) do (
set lowcase=!lowcase:%%c=%%b!
set letters=!letters!%%c
)
)
rem Separate individual characters in "char" two dimensional array, and create "bit" array
rem Non-alphabetic characters are marked with "bit" elements = 2
set n=-1
:nextChar
set /A n+=1
set char=%lowcase:~0,1%
if "!letters:%char%=!" neq "%letters%" (
set bit[%n%]=0
set char[%n%,0]=%char%
set char[%n%,1]=%upcase:~0,1%
) else (
set bit[%n%]=2
set char[%n%,2]=%char%
)
set upcase=%upcase:~1%
set lowcase=%lowcase:~1%
if defined lowcase goto nextChar
rem Generate all permutations
:nextValue
rem Copy characters from "char" array into "output" string with current "bit" values
set output=
for /L %%i in (0,1,%n%) do (
for %%b in (!bit[%%i]!) do (
set output=!output!!char[%%i,%%b]!
)
)
rem Show this permutation
echo %output%
rem Advance "bit" array to next value
set /A b=n+1, carry=1
:nextBit
set /A b-=1
if !bit[%b%]! lss 2 (
if !bit[%b%]! equ 0 (
set /A bit[%b%]=1, carry=0
) else (
set /A bit[%b%]=0, carry=1
)
)
if %b% gtr 0 if %carry% equ 1 goto nextBit
if %carry% equ 0 goto nextValue
1
이 솔루션은 대소 문자가없는 문자열의 문자를 올바르게 처리합니다.
@echo off
setlocal enableDelayedExpansion
set "string=%~1"
set "permutation="
set pos=0
for %%C in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do set "lower_%%C=%%C"
for %%C in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do set "upper_%%C=%%C"
if defined string call :permute
exit /b
:permute
setlocal
set "chr=!string:~%pos%,1!"
if not defined chr (
echo(!permutation!
exit /b
)
set /a pos+=1
for /f delims^=^ eol^= %%C in ("!chr!") do (
if defined upper_%%C (
set "permutation=!permutation!!lower_%%C!"
call :permute
set "permutation=!permutation:~0,-1!!upper_%%C!"
call :permute
) else (
set "permutation=!permutation!%%C"
call :permute
)
)
exit /b
가정 스크립트는 여기 PERMUTE.BAT입니다 출력 샘플 호출입니다 : (두 번 이상 나타나는 문자 용으로) 당신에게 정확한 답을 얻기를위한
>permute.bat "test it"
test it
test iT
test It
test IT
tesT it
tesT iT
tesT It
tesT IT
teSt it
teSt iT
teSt It
teSt IT
teST it
teST iT
teST It
teST IT
tEst it
tEst iT
tEst It
tEst IT
tEsT it
tEsT iT
tEsT It
tEsT IT
tESt it
tESt iT
tESt It
tESt IT
tEST it
tEST iT
tEST It
tEST IT
Test it
Test iT
Test It
Test IT
TesT it
TesT iT
TesT It
TesT IT
TeSt it
TeSt iT
TeSt It
TeSt IT
TeST it
TeST iT
TeST It
TeST IT
TEst it
TEst iT
TEst It
TEst IT
TEsT it
TEsT iT
TEsT It
TEsT IT
TESt it
TESt iT
TESt It
TESt IT
TEST it
TEST iT
TEST It
TEST IT
+0
+1, 그것은 훌륭하고 잘 작동합니다. – Endoro
관련 문제
- 1. N 배열의 모든 조합을 가져옵니다.
- 2. 소문자를 대문자로 변환
- 3. Editplus는 대문자로 소문자를 대입합니다.
- 4. 문자열의 소문자를 대문자로 변경하십시오.
- 5. 일괄 처리로 파일 이동
- 6. 일괄 처리로 jmx를 실행하려고합니다.
- 7. 디렉토리의 모든 파일에 대해 실행 파일을 일괄 처리로 작성
- 8. "문자열"이 포함 된 모든 레지스트리 키를 일괄 처리로 삭제합니다.
- 9. ASCII를 사용하여 소문자를 대문자로 변환
- 10. 사전의 모든 키를 대문자로 변환하십시오.
- 11. 모든 단어를 대문자로 변환
- 12. 모든 조합을 문자로 바꿉니다.
- 13. 퀸즈의 모든 조합을 얻으시겠습니까?
- 14. 모든 조합을 인쇄하면, 파이썬
- 15. CMake 소문자를 대문자로 변환하는 정규식
- 16. X86 어셈블리 소문자를 대문자로 변환
- 17. 일괄 처리로 정렬하기
- 18. 일괄 처리로 날짜 지정
- 19. 일괄 처리로 지오 코딩
- 20. ModelControllerClient를 일괄 처리로 실행
- 21. 일괄 처리로 레코드 선택
- 22. MySql 쿼리를 사용하여 동일한 테이블 필드의 모든 요소 조합을 가져옵니다.
- 23. 문자열의 정규식을 일괄 처리로 대체하십시오.
- 24. 일괄 처리 범위를 일괄 처리로 제거
- 25. 파일을 일괄 변경하여 숫자를 바꿉니다.
- 26. 대문자로 시작하는 모든 단어 선택하기
- 27. 모든 데이터베이스 문자열을 대문자로 변환
- 28. 이름 목록에서 모든 조합을 생성하십시오.
- 29. 가능한 모든 숫자 조합을 계산하십시오.
- 30. 개체 집합의 모든 조합을 생성하려면
일부 추가 고려 사항 : 1. 단어가 "테스트"라고 가정 해보십시오. 귀하의 상황에서 "Test"가 "TesT"와 다른 조합입니까? 2. "맛"과 같은 단어가 여러 개인 경우 "맛"과 다른 "맛"입니까? – panhandel
이것은 일종의'순열'이다. [Aacini] (http://stackoverflow.com/users/778560/aacini)를 기다려라. 그가 도와 줄 수있다. – Endoro
@Endoro : 고마워! 당신은 내게 많은 확신을 가지고 있습니다. :-) – Aacini