zoukankan      html  css  js  c++  java
  • C# 字符串大小写混合转换(同时进行)

    一般的大小写转换比较常用String自带的方法。ToUpper()|ToLower()。有一种特殊情况下,就是给你个字符串。如String="aSd$";要求a~A 、S~s、d~D、$符号不变。

    查阅了资料,别人说有三种方式。我只找到了两种。

    • 一:预定义大小写字符数组

    (1):预定义字符串存储26个字母的大小写。顺序对应尽量一致

     private static char[] up = { 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M' };
     private static char[] lower = { 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm' };

    (2):写方法来逐一判断每一个字符串中的元素

    public static string GetResult(string str)
    {
        StringBuilder sb=new StringBuilder();//用于存储改变后的字符串  StringBuilder具有高效性
        for(int i=0;i<str.Length;i++)
        {
           int bol=Array.Indexof(up,str[i]);//检查str中第一个元素是否是大写。这里也可以自己先判断是否为小写。
            if(bol==-1)//两种情况 1:小写元素  2:其他元素
            {
              int bol2=Array.IndexOf(lower,str[i]);//此时检查是否为小写
                if(bol2==-1)//说明是其他元素
                {
                  sb.Append(str[i]);//原封不动的添加即可
                  continue;//然后开始下一个元素的匹配
                }    
                else//是小写元素  那么久添加对应的大写元素
                {
                 sb.Append(up[bol2]);
                }
            } 
            else //存在与之对应的大写元素  添加为小写元素
            {
             sb.Append(lower[bol]);
            }   
        }
      return sb.ToString();
    }
            

    为了加深印象。手打的

    之后在调用这个方法就可以了。

    • 二:利用Ascall码来比较

      

                string str = "aSd$";
                //转换为数组  才可以进行修改
                char[] c = str.ToCharArray();
                //存储转化之后的字符
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < str.Length; i++)
                {
                    //利用ascall
                    if (c[i] >= 'a' && c[i] <= 'z')//判断是否为小写
                    {
                        c[i] = (char)(c[i] - 32);//是的话  就转变为大写
                    }
                    else if (c[i] >= 'A' && c[i] <= 'Z')
                    {
                        c[i] = (char)(c[i] + 32);
                    }
                    else
                    {
                        c[i] = c[i];//其他元素  不改变
                    }
                    sb.Append(c[i]);//添加元素
                }
                Console.WriteLine(str);

     Console.WriteLine(sb.ToString());

                  Console.ReadKey();

    
    

    大小写相差32 可以看看这个连接。

    https://blog.csdn.net/u011930916/article/details/79623922

  • 相关阅读:
    「十二省联考2019」 春节十二响
    「八省联考2018」 劈配
    斯特林数
    「POJ2505」A multiplication game [博弈论]
    [luogu2048] [bzoj2006] [NOI2010] 超级钢琴 题解
    [HNOI2002]-洛谷2234-营业额统计-Treap
    平衡树Treap模板与原理
    KMP算法讲解
    高斯消元--模板,原理
    第一篇博客!!
  • 原文地址:https://www.cnblogs.com/Audient/p/10991620.html
Copyright © 2011-2022 走看看