asp.net中C#字符串操作函数与方法

作者:袖梨 2022-06-25

(1)取字符串长度 .Length;
(2)字符串转为比特码 GetBytes()
(3)字符串相加 推荐StringBuilder sb = new StringBuilder();sb.Append();
(4)截断字符串的一部分 变量.SubString(起始位置,截取位数);
(5)查指定位置是否为空字符 char.IsWhiteSpace(字符串变量,位数);
(6)查字符是否是标点符号 char.IsPunctuation(‘字符');
(7)把字符转化为数字,查代码点 (int)'变量'
(8)把数字转为字符,查代码代表的字符 (char)代码
(9)清除字符串前后包含的空格 变量.Trim()
(10)替换字符串:字符串变量.Replace(原字符串,新的字符串)
(11)删除字符串最后一个字符的3种方法

 代码如下 复制代码
Eg:string s = “1,2,3,4,5,”;
a) s.SubString(0,s.Length-1)//删除最后一个逗号
b) s.ToString().RTrim(‘,');//删除逗号,跟的变量是任何有效的字符串
c) s.TrimEnd(‘,');//删除逗号,后面跟的变量是数组
char[] mychar={‘5',','};//删除‘5‘以及',‘
s.TrimEnd(mychar);

(12)Split的3种方法
a) 用单个字符来分隔 .Split(new char[]{‘字符'}) // .Split(‘字符');
b) 用多个字符来分隔 .Split(new char[2]{‘字符',''})
c) 用字符串来分隔 Regex.Split(,”字符串”,RegexOptions.IgnoreCase);

(13)几种输出字符串的格式

 代码如下 复制代码
ToString(“n”); //生成12,345.00
ToString(“C”); //生成¥12,345.00
ToString(“e”); //生成1.234500e+004
ToString(“f4”); //生成12345.0000
ToString(“x”); //生成3039(16进制)
ToString(“p”); //生成1,234,500.00%

(14)把123456789转换为12-345-6789的3种方法

 代码如下 复制代码
(a)A = int.Parse(a).ToString(“##-###-####”);
(b)A = a.Insert(5,”-”).Insert(2,“-”);
(c)Using System.Text.RegularExpressions; //先引用
Regex reg = new Regex(@“^(d{2})(d{3})(d{4})$”);
A = reg.Replace(a,”$1-$2-$3”);

(15)输出21个A的简单方法 striing str = new string(‘A',21);
(16)得到随机数的方法

 代码如下 复制代码
Ramdom r = new Ramdom();
Int n1 = r.Next(); //返回非负随机整数
Int n2 = r.Next(10); //返回一个小于所指定最大值(10)的非负随机整数
Int n3 = r.Next()%10; //返回一个小于所指定最大值(10)的非负随机整数
Int n4 = r.Next(1,20); //返回一个指定范围(1~20)内的随机整数
Int n5 = r.NextDouble(); //得到一个介于0.0~1.0之间的随机整数

(17)Int32.TryParse(),Int32. Parse(),Convert.ToInt32()比较:
都是将字符串转换为整数数字

 代码如下 复制代码
Int32.TryParse(string,out int);
Int = Int32. Parse(string);
Int = Convert.ToInt32(string);

比较:Convert.ToInt32()在null时不抛出异常而是返回零;Int32. Parse()会抛出异常;Int32.TryParse()不抛出异常,会返回true或false来说明解析是否成功。如果解析错误,则out调用放将会得到零值;
从性能上讲,Int32.TryParse()优于Int32.Parse(),而Int32.Parse()优于Convert.ToInt32()。
建议:在.NET1.1下用Int32.Parse();在.NET2.0下用Int32.TryParse()。


补充

 代码如下 复制代码

//获得汉字的区位码
    byte[] array = new byte[2];
    array = System.Text.Encoding.Default.GetBytes("啊");
  
  
  
  int i1 = (short)(array[0] - '''');
    int i2 = (short)(array[1] - '''');
  
  
  //unicode解码方式下的汉字码
    array = System.Text.Encoding.Unicode.GetBytes("啊");
    i1 = (short)(array[0] - '''');
    i2 = (short)(array[1] - '''');
  
  
  //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("方枪枪");
  
  /////////////////////////////////////////////////////////////////////
  
  
  
  string --> byte array
  
  byte[] data=Syste.Text.Encoding.ASCII.GetBytes(string);
  
  string --> byte
  
  byte data = Convert.ToByte(string);
  
  byte[]-->string
  
  string string = Encoding.ASCII.GetString( bytes, 0, nBytesSize ); 
 

 

// reverse  倒序输出

            string str = Console.ReadLine();
            for (int i = str.Length - 1; i >= 0; i--)
            {
                Console.Write(str[i]);
            }
            Console.ReadLine();

 

对字符串处理的常见功能

 代码如下 复制代码

* 计算字符串的长度 *

string myString = "This is a test!";
Console.WriteLine("Text is :{0}",myString)
Console.WriteLine("Text's long is :{0}",myString.Length)

* 转换大小写 *

myString = myString.ToLower(); //所有字符转换成小写
myString = myString.ToUpper(); //所有字符转换成大写

* 删除前后空格 *

myString = myString.Trim(); //同时删除字符串前后的空格
char[] trimChars = {' ','e','s'}; //准备删除的字符
myString = myString.Trim(trimChars); //删除所有指定字符
myString = myString.TrimEnd(); //删除字符串后的空格
myString = myString.TrimStart(); //删除字符串前的空格

* 添加空格 *

myString = myString.PadRight(14,' '); //当字符串长度不够14位时,在他的右边用指定字符填充
myString = myString.PadLeft(14,' '); //当字符串长度不够14位时,在他的左边用指定字符填充

* 拆分字符串 *

string[] nStrs = myString.Split(' ',3); //按照空格进行拆分,并且返回前三个字符串


* 获取子字符串 *

string a = myString.Substring(2,2); //从myString字符串的第三位开始获取两个字符,因为索引起始位是0

* 替换字符串中的字符 *

string a = myString.Replace("i","o"); //将这个字符串中的所有“i”替换成“o”


C#中字符串实际上是Char变量的只读数组。可以用下面的方法访问字符串中每一个字符,但是不能修改他们。

string myString = "This is a test!";
foreach (char myChar in myString)
{
Console.Write("{0}",myChar);
}

要想得到一个可读写的字符数组,你可以这样。

char[] myChars = myString.ToCharArray();

特殊字符的表示方法

由于在C#中使用双引号划分字符串的开始和结束,那么对于一些特殊字符,例如双引号本身就需要使用叫做转义字符的辅助字符来表示了

字符串的比较等常用操作

1.字符串比较

 代码如下 复制代码
string.Compare(x,y);
<0: x 小于 y。 或 x 为空引用。
=0: x 等于 y。
>0: x 大于 y。 或 y 为空引用。
string.Equals(x,y);
true x 等于 y。
false x 不等 y。
2.从字符串中提取子串
StringBuilder 类没有支持子串的方法,因此必须用String类来提取。
string mystring="My name is ynn.";
//Displays "name is ynn."
Console.WriteLine(mystring.Substring( 3 ));
//Displays "ynn"
Console.WriteLine(mystring.Substring( 11,3 ));

3.格式化数字
c、C         货币格式。
d、D         十进制格式。
e、E         科学计数(指数)格式。
f、F         固定点格式。
g、G         常规格式。
n、N         数字格式。
r、R         往返格式,确保将已转换成字符串的数字转换回数字时具有与原数字相同的值。
x、X         十六进制格式。

 代码如下 复制代码
double val=Math.PI;
Console.WriteLine(val.ToString( ));    //displays 3.14159265358979
Console.WriteLine(val.ToString("E"));//displays 3.141593E+000
Console.WriteLine(val.ToString("F3");//displays 3.142
int val=65535;
Console.WriteLine(val.ToString("x"));    //displays ffff
Console.WriteLine(val.ToString("X"));    //displays FFFF
Single val=;
Console.WriteLine(val.ToString("p"));    //displays 12.30 %
Console.WriteLine(val.ToString("p1"));    //displays 12.3 %

默认格式化会在数字和百分号之间放入一个空格。定制方法如下:
其中NumberFormatInfo类是System.Globalization命名空间的一个成员,因此该命名空间必须导入到程序中。

 代码如下 复制代码
Single val=;
object myobj=NumberFormatInfo.CurrentInfo.Clone( ) as NumberFormatInfo;
NumberFormatInfo myformat=myobj as NumberFormatInfo;
myformat.PercentPositivePattern=1;
Console.WriteLine(val.ToString("p",myformat)); //displays 12.30%;
Console.WriteLine(val.ToString("p1",myformat)); //displays 12.3%;

格式化具有很大的灵活性。下面的例子演示一个没有意义的货币结构:

 代码如下 复制代码
double val=1234567.89;
int [] groupsize={2,1,3};
object myobj=NumberFormatInfo.CurrentInfo.Clone( );
NumberFormatInfo mycurrency=myobj as NumberFormatInfo;
mycurrency.CurrencySymbol="#"; //符号
mycurrency.CurrencyDecimalSeparator=":"; //小数点
mycurrency.CurrencyGroupSeparator="_";    //分隔符
mycurrency.CurrencyGroupSizes=groupsize;
// 输出 #1_234_5_67:89
Console.WriteLine(val.ToString("C",mycurrency));

最后一个类自己慢慢看吧

 代码如下 复制代码


using System;


namespace testStringApp
{
 ///


 /// Class1 的摘要说明。
 ///

 class Class1
 {
  ///
  /// 应用程序的主入口点。
  ///

  [STAThread]
  static void Main(string[] args)
  {
   //
   // TODO: 在此处添加代码以启动应用程序
   //
   //直接给字符串赋值
   string strA = "This is a string";
   Console.WriteLine ("strA: "+strA);
   //ToCharArray方法,建立Char数组;IndexOf方法,查找子串位置
   char[] charArray = strA.ToCharArray(0,strA.IndexOf ("string"));
   //使用new关键字初始化字符串,作用等同于charArray.ToString()
   string strB = new string (charArray);
   Console.WriteLine ("strB: "+strB);
   //Insert方法,插入子串
   string strC = strA.Insert (strA.IndexOf ("string"),"another ");
   Console.WriteLine ("strC: "+strC);
   //+操作符,连接字符串
   string strD = strA + strB;
   Console.WriteLine ("strD: "+strD);
   //String.Concat方法,链接字符串,相当于+
   //String.Equals方法,比较字符串,相当于==
   if (String.Equals (strD,String.Concat (strA,strB)))
   {
    if (strD == strA+strB)
    {
     Console.WriteLine ("String.Concat等同于+/n,System.Equals等同于==");
    }
   }
   //Trim方法,删除字符串中的空格或其它字符
   string strE = strA.Trim();
   Console.WriteLine ("strE: "+strE);
   //使用/显示引号"和反斜线/
   string strF = "C://Windows//System32//";
   Console.WriteLine ("/"" + strF + "/"");
   //使用@显示引号"和反斜线/
   string strG = @"C:/Windows/System32/";
   Console.WriteLine (@"""" + strG + @"""");
   //string转换为int型
   string strH = "12345";
   int theInt = int.Parse (strH);
   Console.WriteLine ("科学计数显示整数{0:E}",theInt);
   Console.WriteLine ("十六进制显示整数{0:X}",theInt);
   //string转换为float型
   string strI = "123.45";
   float theFloat = float.Parse (strI);
   Console.WriteLine ("显示浮点数,指定小数位数{0:F4}",theFloat);
            Console.ReadLine();
  }
 }
}

1)截取字符串
使用substring方法,而该方法在c#中有两个重载函数:substring(参数),substring(参数1,参数2),用法如下:

 代码如下 复制代码
string A ="I'm a string";
sting B=A.substring(1);
sting C=A.substring(1,6);

其中传入的参数1为字符串的起始位置,字符子串B将截取字符串A的第2个字符之后所有的字符.
字符子串C将截取字符串A的第2个字符之后的长度为6的字符串.
参数必须大于等于0,如果小于0将抛出ArgumentOutOfRange异常.
2)字符串转化为字符数组
首先,string类型变量可以看成为char变量的只读数组,这样就可以使用如下语法访问每个字符:
string A = "i'm a string"
char B =A[1];
而要是把字符串变为可写的char数组,可以使用TocharArray()方法:
char [] = A.Tochararray();
使用B.Length获取字符串的长度.
3)转换大小写
.ToLower() 转换成小写
.ToUpper() 转换成大写
4)删除字符串种的空格或者指定的字符
 删除字符串前后的空格:
.Trim()
删除指定的字符:
首先利用char数组指定特定字符
char[] C ={' ','e',}
.Trim(C)
也可以使用Trimstart(),TrimEnd()分别去除前后的空格或者指定的字符
5)在字符串前后添加空格或者指定的字符
.PadLeft(参数) .PadRight(参数)  参数为添加空格后字符串的长度
.PadLeft(参数1,参数2) 参数1为使字符串达到的长度,参数2为指定添加的字符.
6)indexof()的用法
IndexOf()
查找字串中指定字符或字串首次出现的位置,返回首索引值,如:
str1.IndexOf("字"); //查找“字”在str1中的索引值(位置)
str1.IndexOf("字串");//查找“字串”的第一个字符在str1中的索引值(位置)
str1.IndexOf("字",start,end);//从str1第start+1个字符起,查找end个字符,查找“字”在字符串STR1中的位置[从第一个字符算起]注意:start+end不能大于str1的长度
7)insert()的用法
.insert(参数1,参数2)
参数1为插入子字符串的其实位置,参数2为要插入的子字符串
8)比较字符串的大小
Compare(str1,str2)——比较两个字符串 str1,str2的大小,如果大于返回正数,等于返回0,小于返回负数
9)替换指定的字符串
String.Replace(参数1,参数2)——用指定的字符替换字符串中的指定字符
字符串的处理方法还有很多,这里就不一一列举了,以后用到在慢慢学习.

相关文章

精彩推荐