字符串操作技巧--zj

  1. 如何分隔字符串到数组中

    string total = "aaa,bbb,ccc,dddd";
    string[] strArray;
    char[] charArray = new char[] { ',' };
    strArray = total.Split(charArray);
    
    string str = "26,24,25";
    
    string[] split = str.Split(new Char[] { ',' });
    foreach (string s in split)
    {
        if (s.Trim() != "")
            Console.WriteLine(s);
    }
    
  2. 格式化字符串:

    String.Format(format项,要格式化的Object)
    format项格式为: { index,alignment:formatString}
    index 从零开始的整数,指示对象列表中要格式化的元素
    alignment 可选整数,指示包含格式化值的区域的最小宽度
    formatString 格式化代码的可选字符串
    必须使用成对的大括号(“{”和“}”)。因为左右大括号分别被解释为格式项的开始和结束

    标准数字格式字符串

    C 或 c货币 数字转换为表示货币金额的字符串。
    D 或 d十进制 只有整型才支持此格式。
    E 或 e科学计数法(指数)
    F 或 f固定点 数字转换为“-ddd.ddd...”形式的字符串,
    G 或 g常规
    N 或 n数字
    P 或 p百分比
    R 或 r往返过程
    X 或 x十六进制

    自定义数字格式字符串

    0零占位符
    #数字占位符
    .小数点
    ,千位分隔符和数字比例换算
    %百分比占位符
    |转义符
    'ABC'"ABC" 字符串引在单引号或双引号中的字符被原样复制到输出字符串中,而且不影响格式化。
    ;部分分隔符用于分隔格式字符串中的正数、负数和零各部分。
    string sf=string.Format("{0}年{1}月{2}日 {3}时{4}分",
                Year,Month,Day,currTime.TruantTime.Hour,currTime.TruantTime.Minute);
    
  3. 字符串处理

    string fox;
    fox.ToLower();//转化成小写字母
    fox.ToUpper();//转化成大写字母
    fox.Trim();//删除前后空格
    fox.Trim(trimChars);//删除其它字符
    fox.TrimStart();//删除前空格
    fox.TrimEnd();//删除后空格
    fox.PadLeft(10);//增加左边空格,使字串达到某长度。
    fox.PadRight(10);//增加右边空格,使字串达到某长度。
    fox.PadX(10,'-');//增加其它字符,使字串达到某长度。X指:Left/Right
    fox.Split(' ');//将字串分解成数组
    
  4. 类型转换

    转换不规则字符串

    using System.Globalization;
    string d="2.00";
    int s=int.Parse(d,NumberStyles.AllowDecimalPoint);
    s=int.Parse(d);//会报错
    
  5. 字符串常用的方法

    //获得汉字的区位码
    byte[] array = new byte[2];
    array = System.Text.Encoding.Default.GetBytes("啊");
    
    int i1 = (short)(array[0] - '\0');
    int i2 = (short)(array[1] - '\0');
    
    //unicode解码方式下的汉字码
    array = System.Text.Encoding.Unicode.GetBytes("啊");
    i1 = (short)(array[0] - '\0');
    i2 = (short)(array[1] - '\0');
    
    //unicode反解码为汉字
    string str = "4a55";
    string s1 = str.Substring(0,2);
    string s2 = str.Substring(2,2);
    
    int t1 = Convert.ToInt32(s1,16);
    int t2 = Convert.ToInt32(s2,16);
    
    array[0] = (byte)t1;
    array[1] = (byte)t2;
    
    string s = System.Text.Encoding.Unicode.GetString(array);
    
    //default方式反解码为汉字
    array[0] = (byte)196;
    array[1] = (byte)207;
    s = System.Text.Encoding.Default.GetString(array);
    
    //取字符串长度
    s = "iam方枪枪";
    int len = s.Length;//will output as 6
    byte[] sarr = System.Text.Encoding.Default.GetBytes(s);
    len = sarr.Length;//will output as 3+3*2=9
    
    //字符串相加
    System.Text.StringBuilder sb = new System.Text.StringBuilder("");
    sb.Append("i ");
    sb.Append("am ");
    sb.Append("方枪枪");
    
  6. 查找

    DataColumn[] keys = new DataColumn[1];
    keys[0] = thisDataSet.Tables["Intro"].Columns["ID"];
    thisDataSet.Tables["Intro"].PrimaryKey = keys;
    DataRow findRow = thisDataSet.Tables["Intro"].Rows.Find("2");
    if (findRow == null)
    {
        Console.WriteLine("Not found");
    }
    else
    {
        Console.WriteLine("Aleady!");
    }
    
  7. 字符串下标调用控件

    //调用
    private void button1_Click(object sender, System.EventArgs e)
    {
        for (int i = 1; i < 11; i++)
            this.MyCheck("checkBox" + i.ToString());
    }
    
    //函数
    private void MyCheck(string whichone)
    {
        foreach (Control control in this.Controls)
        {
            CheckBox mycheckbox = (control as CheckBox);
            if (mycheckbox != null)
            {
                string myName = mycheckbox.Name.ToString();
                if (myName == whichone)
                {
                    mycheckbox.Checked = true;
                }
            }
        }
    }
    
  8. 正则表达式

    using System.Text.RegularExpressions;
    string Text = "The software ad,is MeTone,  a,is very gaaad!,Your Need";
    //一般
    //   string Pattern="is";
    //   MatchCollection Matches=Regex.Matches(Text,Pattern,RegexOptions.IgnoreCase);
    //   foreach(Match NextMatch in Matches)
    //    Console.WriteLine(NextMatch.Index);
    //转义,以n开头的单词
    //   string Pattern=@"\bn";
    //   MatchCollection Matches=Regex.Matches(Text,Pattern,RegexOptions.IgnoreCase|RegexOptions.ExplicitCapture);
    //   foreach(Match NextMatch in Matches)
    //    Console.WriteLine(NextMatch.Index);
    //转义,以e结尾的单词
    //   string Pattern=@"e\b";
    //   MatchCollection Matches=Regex.Matches(Text,Pattern,RegexOptions.IgnoreCase|RegexOptions.ExplicitCapture);
    //   foreach(Match NextMatch in Matches)
    //    Console.WriteLine(NextMatch.Index);
    //转义,以M开头,以e结尾,中间是任何数量不为空的字符,\S表示不是空白的字符,*任何数量
    //   string Pattern=@"\bM\S*e\b";
    //   MatchCollection Matches=Regex.Matches(Text,Pattern,RegexOptions.IgnoreCase|RegexOptions.ExplicitCapture);
    //   foreach(Match NextMatch in Matches)
    //    Console.WriteLine(NextMatch.Index);
    //转义,以T只能是总文本中的第一个字符
    //   string Pattern=@"^T";
    //   MatchCollection Matches=Regex.Matches(Text,Pattern,RegexOptions.IgnoreCase|RegexOptions.ExplicitCapture);
    //   foreach(Match NextMatch in Matches)
    //    Console.WriteLine(NextMatch.Index);
    //转义,以d只能是总文本中的第一个字符
    //   string Pattern=@"d$";
    //   MatchCollection Matches=Regex.Matches(Text,Pattern,RegexOptions.IgnoreCase|RegexOptions.ExplicitCapture);
    //   foreach(Match NextMatch in Matches)
    //    Console.WriteLine(NextMatch.Index);
    //转义,.是除以换行符\n以外的任何一个字符
    //   string Pattern=@"g.d";
    //   MatchCollection Matches=Regex.Matches(Text,Pattern,RegexOptions.IgnoreCase|RegexOptions.ExplicitCapture);
    //   foreach(Match NextMatch in Matches)
    //    Console.WriteLine(NextMatch.Index);
    //    Console.WriteLine(NextMatch.Index);
    //转义,+可以重复一次或多次的前导字符
    //   string Pattern=@"ga+d";
    //   MatchCollection Matches=Regex.Matches(Text,Pattern,RegexOptions.IgnoreCase|RegexOptions.ExplicitCapture);
    //   foreach(Match NextMatch in Matches)
    //    Console.WriteLine(NextMatch.Index);
    //转义,?可以重复零次或多次的前导字符
    //   string Pattern=@"ga+d";
    //   MatchCollection Matches=Regex.Matches(Text,Pattern,RegexOptions.IgnoreCase|RegexOptions.ExplicitCapture);
    //   foreach(Match NextMatch in Matches)
    //    Console.WriteLine(NextMatch.Index);
    //转义,?可以重复零次或多次的前导字符
    //   string Pattern=@"\sa";
    //   MatchCollection Matches=Regex.Matches(Text,Pattern,RegexOptions.IgnoreCase|RegexOptions.ExplicitCapture);
    //   foreach(Match NextMatch in Matches)
    //    Console.WriteLine(NextMatch.Index);
    //提取网址
    Text = "I'found the URL is http://www.emay.net.cn is very good";
    string Pattern = @"\b(\S+)://(\S+)(?::(\S+))?\b";
    MatchCollection Matches = Regex.Matches(Text, Pattern, RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture);
    foreach (Match NextMatch in Matches)
        Console.WriteLine(NextMatch);
    
Contributors: FHL