zoukankan      html  css  js  c++  java
  • C# 字符串String相关

    是否可以继承String类

    不能,因为从定义上看String类是sealed类【密封】故不可以继承。
    当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。若硬要写,则编译不通过

    字符串字节长度、字符长度

    string strTmp = "abcdefg某某某";
    int i=System.Text.Encoding.Default.GetBytes(strTmp).Length;
    int j= strTmp.Length;

    以上代码执行完后,i= j= 
    答:i=13,j=10

    解释:

    一个汉字占两个字节,一个字母占一个字节;

    String的Lenght属性表示字符的个数(不分中英文)。

    字符串对象

    String s = new String("xyz");创建了几个String Object

    答:两个对象,一个是“xyz”,一个是指向“xyz”的引用对象s。

    空字符串理解

    String str1 = null;   str引用为空

    String str2 = "";      str引用一个空串

    也就是null没有分配内存空间,""分配了内存空间,因此str1还不是一个实例化的对象,而str2已经实例化。

    注意:null不是对象,""是对象。所以比较的时候必须是 if(str1==null){...}和if(str2.equals("")){...}。

    对象用equals比较,null用等号比较。

    因此,如果str1=null;  下面的写法错误: 

    if(str1.equals("")||str1==null)
    {
    //如果str1没有值,则.... 
    //。。。。 
    } 

    正确的写法是:

    if(str1==null||str1.equals(""))
    { 
    //先判断是不是对象,如果是,再判断是不是空字符串 
    //... 
    }

    打个比方:一个空玻璃杯,你不能说它里面什么都没有,因为里面有空气,当然也可以把它弄成真空,null与" "的区别就象真空与空气一样。

    string与stringBuilder

    String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非很显著。 因为一旦创建了该对象,就不能修改该对象的值。
    在处理字符串时,最好使用stringBuilder类,其.NET命名空间是System.Text。该类并不是创建新的对象,而是通过append,remove,insert等方法直接对字符串进行操作,通过toString方法返回操作结果,因此当你需要大量拼接、删除、修改字符串时,使用stringBuilder可以优化性能。 

    数字转为百分数字符串(保留小数点后两位)

    • C#代码, Int/double 至少一个不是int型

    ToString("0.00%");   或者ToString("p2");

    • JS代码

    ((a/b)*100).toFixed(2)  + '%'  

     

    判断字符串中汉字

     方法1、用ASCII码判断

    //在 ASCII码表中,英文的范围是0-127,而汉字则是大于127,具体代码如下:

    string text = "是不是汉字,ABC,柯乐义";
            for (int i = 0; i < text.Length; i++)
            {
                if ((int)text[i] > 127)
                {
                    Console.WriteLine("是汉字");
                }
                else
                {
                    Console.WriteLine("不是汉字");
                }
            }
    View Code

    方法2、用汉字的 UNICODE 编码范围判断

    //汉字的 UNICODE 编码范围是4e00-9fbb,具体代码如下:

    string text = "是不是汉字,ABC,keleyi.com";
                char[] c = text.ToCharArray();
                for (int i = 0; i < c.Length; i++)
                {
                    if (c[i] >= 0x4e00 && c[i] <= 0x9fbb)
                    {
                        Console.WriteLine("是汉字");
                    }
                    else
                    {
                        Console.WriteLine("不是汉字");
                    }
                }
    View Code

    方法3、用正则表达式判断

    //用正则表达式判断也是用汉字的 UNICODE 编码范围,具体代码如下:

    string text = "是不是汉字,ABC,keleyi.com";
                 for (int i = 0; i < text.Length; i++)
                 {
                       if (Regex.IsMatch(text[i].ToString(), @"[u4e00-u9fbb]+{1}"))
                       {
                           Console.WriteLine("是汉字");
                       }
                       else
                       {
                           Console.WriteLine("不是汉字");
                       }   
                 }
    View Code

     

  • 相关阅读:
    solr 使用
    深入理解java虚拟机(二)HotSpot Java对象创建,内存布局以及访问方式
    深入理解java虚拟机(一)
    获取请求体数据 POST
    获取请求头数据
    Servlet之Request和Response 解析
    Servlet 之 Http协议
    Servlet 体系结构
    如何修改servlet的创建时机?
    Java Web servlet 详解
  • 原文地址:https://www.cnblogs.com/peterYong/p/11372046.html
Copyright © 2011-2022 走看看