[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 3# pcl_test


    用 [char[]] 好像也行:[char[]]'bBAathToHOMmEe' ...

TOP

  1. @for %%a in (a-z A-Z) do @echo aAbBdD | grep -o [%%a] | gawk "ORS=s;1"
复制代码
1

评分人数

TOP

本帖最后由 523066680 于 2017-4-15 10:57 编辑

回复 24# happy886rr


    Matrix67我知道,还买了他的第一版书作为支持。现在他博客上有很多更新文章还未看,忙于工作和重新补习不同语言的语法(糖)。

TOP

回复 6# 一年前挖下的坑
来自1年之后的填坑:
  1. ;Code By 老刘
  2. ;编译环境:MASM32 SDK
  3. ;编译指令:ml /coff 字母按大小写归并.ASM /link /subsystem:console
  4. ;调用方法:CMD传参,参数1为要处理的字符串。
  5. ;其他:非大小写字母的字符将被丢弃;传入字符串长度最长为126字符。
  6. Include Masm32rt.INC
  7. .Data?
  8. Arg db 128 dup (?)
  9. UpperCaseString db 128 dup (?)
  10. LowerCaseString db 128 dup (?)
  11. NewString db 128 dup (?)
  12. .Code
  13. Start:
  14. Invoke ArgClC,1,Offset Arg
  15. .If Eax == 1
  16. Mov Esi,Offset Arg
  17. Mov Ecx,Offset LowerCaseString
  18. Mov Edx,Offset UpperCaseString
  19. .While Al != 0 ;分割为两个字符串
  20. LodSB
  21. .If Al >= 41h && Al <= 5Ah
  22. Mov Byte Ptr [Edx],Al
  23. Inc Edx
  24. .ElseIf Al >= 61h && Al <= 7Ah
  25. Mov Byte Ptr [Ecx],Al
  26. Inc Ecx
  27. .EndIf
  28. .EndW
  29. ;合并到同一个字符串中。
  30. Mov Edi,Offset NewString
  31. ;处理小写字符串
  32. Sub Ecx,Offset LowerCaseString
  33. Mov Esi,Offset LowerCaseString
  34. Rep MovSB
  35. ;处理大写字符串
  36. Sub Edx,Offset UpperCaseString
  37. Mov Ecx,Edx
  38. Mov Esi,Offset UpperCaseString
  39. Rep MovSB
  40. ;字符串结尾
  41. Mov Al,0Ah
  42. StoSB
  43. Xor EAX,EAX
  44. StoSB
  45. ;回显字符串
  46. Invoke StdOut,Offset NewString
  47. .EndIf
  48. Invoke ExitProcess,NULL
  49. End Start
  50. End
复制代码
1

评分人数

TOP

回复 3# pcl_test


    思维敏捷
我就是我,不一样的烟火!

TOP

本帖最后由 happy886rr 于 2018-9-3 21:29 编辑

回复 34# 老刘1号
技术有长进,我都改行了,不再写任何代码。

TOP

  1. @echo off
  2. set "str=bBAathToHOMmEe"
  3. echo;%str%>%temp%\$
  4. sed "s/[A-Z]//g" %temp%\$
  5. sed "s/[a-z]//g" %temp%\$
  6. del %temp%\$
复制代码
  1. @echo off
  2. set "str=bBAathToHOMmEe"
  3. :lp
  4. set "ch=%str:~,1%"
  5. for %%a in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,e,s,t,u,v,w,x,y,z) do (
  6. if "%%a"=="%ch%" (set "LowerCASE=%LowerCASE%%%a")
  7. )
  8. for %%a 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 (
  9. if "%%a"=="%ch%" (set "UperCASE=%UperCASE%%%a")
  10. )
  11. set "str=%str:~1%"
  12. if "%str%" neq "" goto :lp
  13. echo;%LowerCASE%%UperCASE%
复制代码
QQ 33892006

TOP

回复 36# happy886rr


    感谢大佬支持,
大佬改行实在是可惜啊……
为啥突然不搞了呢?

TOP

用纯perl试试
  1. #!perl
  2. my $test = 'bBAathToHOMmEe';
  3. print sort { ( $b cmp '^' ) <=> ( $a cmp '^' ) } split '', $test;
复制代码
1

评分人数

New BEE

TOP

只要能实现这种效果就行。
  1. # include <stdio.h>
  2. # include <stdlib.h>
  3. # include <string.h>
  4. char* classify (char*);
  5. int main (){
  6.     char *test = "bBAathToHOMmEe";
  7.     char *clas = classify(test);
  8.     puts(clas);
  9. }
  10. # define new(T, N) malloc ((N) *sizeof(T))
  11. char* classify(char *test){
  12.     int len   = strlen (test);
  13.     char *ret = new(char, len + 1);
  14.     ret[len]  = 0;
  15.     int i = 0, j = len - 1;
  16.     for (char *a = test, *b = test + j; i <= j; a++, b--) {
  17.         if (*a >= 'a') ret[i++] = *a;
  18.         if (*b <  'a') ret[j--] = *b;
  19.     }
  20.     return ret;
  21. }
复制代码
1

评分人数

New BEE

TOP

回复 36# happy886rr


    啊?改行了?

TOP

回复 36# happy886rr

    才看到你说改行,好奇现在做什么了?业余也不写代码了吗

TOP

返回列表