zoukankan      html  css  js  c++  java
  • C# 字符串处理小工具

    之前刚上大学时沉迷于安全方面,当时一直想写一个处理字符串的小程序。

    无奈当时没有太多时间,一直拖延到这寒假。

    寒假闲来无事,所以就写写小程序来练手,顺便复习一下窗体和基础。

    实现的功能有以下:

    转换为大写

    转换为小写

    反转字符串

    匹配某字符串出现次数

    正则匹配

    base64加密

    base64解密

    ROT13加密解密

    MD5 32位加密

    程序还是非常简陋的,没有健壮性,也没有输入的校验。

    用心创造BUG(比心

    还有请不要吐槽我的变量命名以及方法命名,如果你不是从小学开始学拼音肯定看不懂:)

    因为一开始做这个是在瞎测试的项目里做起来的。

    实在是懒得去翻译了


    转换为大写和小写是有自带的方法的

    1 Console.WriteLine(s.ToUpper());//转换成大写
    2 Console.WriteLine(s.ToLower());//转换成小写


    输出反向字符串

     1 public static void fanxiang(string s)
     2         {
     3             char[] arrey = s.ToCharArray();
     4             StringBuilder s1 = new StringBuilder("");
     5             for (int i = arrey.Length - 1; i >= 0; i--)
     6             {
     7                 s1.Append(Convert.ToString(arrey[i]));
     8             }
     9             Console.WriteLine("反向字符串为{0}",s1);
    10         }

    查看某一短字符串在其中的数量

     1 public static void pipei(string s)
     2         {
     3             int count = 0;
     4             int i;
     5             Console.WriteLine("请输入短字符串");
     6             string s2 = Console.ReadLine();
     7             while ((i=s.IndexOf(s2)) >= 0)
     8             {
     9                 count++;
    10                 s = s.Substring(i + s2.Length);
    11             }
    12             Console.WriteLine("字符串中出现了{0}次{1}", count, s2);
    13         }

    正则匹配

    没有学过正则类的知识,网上看了很多大部分都是讲正则而不是正则类的。当时写这个大概卡了一天,现在这个依然有BUG。

    没有匹配结果时,或者匹配到空?会造成多行换行。我也忘了当时是怎么测试出来的那个BUG。

    哪位园友有想法可以说一下。

     1  public static void zzpipei(string s)
     2         {
     3             Console.WriteLine("请输入正则表达式");
     4             string zz = Console.ReadLine();
     5             Regex re = new Regex(zz);
     6             string s2 = "";
     7             if (re.IsMatch(s))
     8             {
     9                 Console.WriteLine("匹配成功");
    10                 MatchCollection mc = re.Matches(s);
    11                 foreach (Match ma in mc)
    12                 {
    13                     s2 += ma.Value;
    14                     s2 += ("
    ");
    15                 }
    16                 Console.WriteLine("一行为一个匹配结果");
    17                 Console.WriteLine(s2);
    18             }
    19             else
    20             { Console.WriteLine("无匹配结果"); }
    21         }


    base64加密

    使用的方法也是自带的,对于汉字的加密和部分网站的加密不一样。

    1  public static void basejiami(string s)
    2         {
    3             byte[] bytes = Encoding.Default.GetBytes(s);
    4             Console.WriteLine("字符串base64加密为{0}", Convert.ToBase64String(bytes));
    5         }


    base64解密

    1 public static void basejiemi(string s)
    2         {
    3             byte[] bytes = Convert.FromBase64String(s);
    4             Console.WriteLine("字符串base64解密为{0}", Encoding.Default.GetString(bytes));
    5         }


    ROT13加密解密

    ROT13是一种简易的置换暗码。ROT13 也是过去在古罗马开发的凯撒加密的一种变体。

    ROT13是向后替换13位,即A转为N,B转为O以此类推。

    凯撒密码是向后替换3位。这个方法再改一下还可以实现凯撒密码的爆破,而且该方法是区分大小写的。

    ROT13是它自己本身的逆反;也就是说,要还原ROT13,套用加密同样的算法即可得,故同样的操作可用再加密与解密。

    该算法并没有提供真正的密码学上的保全,故它不应该套用在需要保全的用途上。它常常被当作弱加密示例的典型。

     1  public static void rotjm(string s)
     2         {
     3 
     4             string jmzf = "";//解密加密后的字符串
     5 
     6             char[] arrey = s.ToCharArray();
     7             Console.WriteLine("字符串长度为{0}", arrey.Length);
     8             for (int i = 0; i < arrey.Length; i++)
     9             {
    10                 int zfcode = (int)arrey[i];
    11 
    12                 if (zfcode >= 97 && zfcode <= 109)
    13                     zfcode = zfcode + 13;
    14                 else if (zfcode >= 110 && zfcode <= 122)
    15                     zfcode = zfcode - 13;
    16                 else if (zfcode >= 65 && zfcode <= 77)
    17                     zfcode = zfcode + 13;
    18                 else if (zfcode >= 78 && zfcode <= 90)
    19                     zfcode = zfcode - 13;
    20 
    21                 
    22                 jmzf = jmzf + (char)zfcode;
    23             }
    24             Console.WriteLine("结果为{0}", jmzf);
    25         }


    替换字符串

    1 public static void thzf(string s)
    2         {
    3             Console.WriteLine("请输入想要被替换的字符串");
    4             string str1 = Console.ReadLine();
    5             Console.WriteLine("请输入想要替换成的字符串");
    6             string str2 = Console.ReadLine();
    7             Console.WriteLine(s.Replace(str1, str2));
    8         }


    32位MD5加密

     1 public static void md5jm(string s)
     2         {
     3             MD5 md5 = new MD5CryptoServiceProvider();
     4             //将字符编码为字节序列
     5             byte[] data = System.Text.Encoding.Default.GetBytes(s);
     6             byte[] md5data = md5.ComputeHash(data);
     7             md5.Clear();
     8             //遍历加密数组,加密字节,该方法为32位加密
     9             string str = "";
    10             for (int i = 0; i < md5data.Length; i++)
    11             {
    12                 str += md5data[i].ToString("x").PadLeft(2, '0');
    13             }
    14             Console.WriteLine("加密结果为{0}",str);
    15         }

    我的程序,使用.NET framework 4.0。

    密码:wMfxNo

    链接:https://share.weiyun.com/f43946c18309caa80e5b536031cdf90a

    转载请联系



    转载请标明出处

    作者:AaXuan

    地址:http://www.cnblogs.com/Aaxuan

    知识共享许可协议

    本作品采用  知识共享署名 3.0 未本地化版本许可协议  进行许可。

  • 相关阅读:
    jenkins 配置杂项优化
    Ansible终极速度优化之--- Mitogen Plugin
    jenkins基于Ansible自动发布/回滚/管理
    Jenkins Pipeline 参数详解
    jenkins pipeline 复杂的发布流程
    jenkins 更新插件使用代理
    pipeline 多个参数如何传入
    k8s-jenkins x CI/CD 动态创建slave---01
    k8s集群-node节点设置不可调度或者删除node节点
    Kubelet 证书如何自动续期
  • 原文地址:https://www.cnblogs.com/Aaxuan/p/6409857.html
Copyright © 2011-2022 走看看