VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • C#优化字符串操作经验之谈2

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  5.url传递中文的解决方案

  1.设置web.config文件。

<system.web>
......
<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" />
......
</system.web>

  2.传递中文之前,将要传递的中文参数进行编码,在接收时再进行解码。

  >> 进行传递

  string Name = "中文参数";

  Response.Redirect("B.aspx?Name="+Server.UrlEncode(Name));

  >> 进行接收

  string Name = Request.QueryString["Name"];

  Response.Write(Server.UrlDecode(Name));

  3.如果是从 .HTML 文件向 .Aspx 文件进行传递中文参数的话(即不从后台用 Redirect()方法进行 Url 转换)。一样要将传递的中文参数进行编码,在接收时再进行解码。

  >> 进行传递

<script language="javascript">
function GoUrl()
{
var Name = "中文参数";
location.href = "B.aspx?Name="+escape(Name);
}
</script>
<body onclick="GoUrl()">>> 进行接收
  
  string Name = Request.QueryString["Name"];
  
  Response.Write(Server.UrlDecode(Name));

  一般来说。设置web.config文件就可以了。但是如果你用 javascript 调用 webservice 方法的话(往webservice里面传递中文参数)。设置 web.config 文件好象无效。

  6.把123456789转换为12-345-6789的3种方法

 

  方法一:

  C# CODE

string a = "123456789";      
a = int.Parse(a).ToString("##-###-####");      
Console.Write(a);

  方法二:

C# CODEstring a = "123456789";      
a = a.Insert(5, "-").Insert(2, "-");      
Console.Write(a);

  方法三:

  C# CODE

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication1{  
class Program  {    
static void Main()    
{      
string a = "123456789";      
Regex reg = new Regex(@"^(d{2})(d{3})(d{4})$");      
a = reg.Replace(a, "$1-$2-$3");     
Console.Write(a);    
}      
}}

  7.交换两个指定位置字符的4种方法

  方法一:

  C# CODE

static void Main()    
{      
string s = "123456789";      
SwapChar(ref s, 3, 6);      
Console.Write(s.ToString());    
}    
static void SwapChar(ref string s, int i1, int i2)    
{      
char temp = s[i1];     
char temp1 = s[i2];      
s = s.Remove(i1, 1).Insert(i1, temp1.ToString());      
s = s.Remove(i2, 1).Insert(i2, temp.ToString());   
}

 

  方法二:

  C# CODE

static void Main()    {      
string s = "123456789";      
//SwapChar(s, 3, 6);      
Console.Write(SwapChar(s, 3, 6).ToString());    
}    
static string SwapChar(string s, int p1, int p2)    
{      
if ((p1 == p2) || ((p1 < 0) || (p2 < 0))) return s;      
if ((p1 >= s.Length) || (p2 >= s.Length)) return s;     
char[] vChars = s.ToCharArray();      
vChars[p1] = (char)(vChars[p2] | (vChars[p2] = vChars[p1]) & 0);      
return new string(vChars);    
}

  方法三:

  C# CODE

static void Main()    
{      
string s = "123456789";      
Console.Write(SwapChar(s, 3, 6).ToString());    
}    
public static string SwapChar(string str, int a, int b)    
{      
char[] newStr = str.ToCharArray();      
newStr[a] = str[b];      
newStr[b] = str[a];      
return new string(newStr);    
}

  方法四:

  C# CODE

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication1{ 
class Program  
{    
static void Main()    
{      
string s = "123456789";      
Console.Write(SwapChar(s, 3, 6).ToString());    
}    
static string SwapChar(string s, int p1, int p2)    
{      
if (p1 > p2) ...{ int p = p1; p1 = p2; p2 = p; }      
return Regex.Replace(s, "^(.{" + p1 + "})(.)(.{" + (p2 - p1 - 1) + "})(.)(.*)$", "$1$4$3$2$5");    
}  
}

 

  8. “%10”的妙用

  C# CODE

static void Main()    
{      
Random r = new Random();      
Console.WriteLine(r.Next() % 10);//1-9      
Console.WriteLine(r.Next() % 10);      
Console.WriteLine(r.Next() % 10);      
Console.WriteLine(r.Next() % 10);      
Console.WriteLine(r.Next() % 10);      
Console.WriteLine(r.Next() % 10);      
Console.WriteLine(r.Next() % 10);      
Console.WriteLine(r.Next() % 10);      
Console.WriteLine(r.Next() % 10);    
}

  (将输出 1-9 的整数,图略)

  9.输出21个AAAAAAAAAAAAAAAAAAAAA的巧妙做法

  new构造器的理解

  如果要你创建一个由21个"A"字符构成的字符串,你会怎么做?

  C# CODE

  string str = "AAAAAAAAAAAAAAAAAAAAA";//老实型string str = new string('A', 21);//简单聪明

  10.compare()与compareTo()方法

  一样的功能,只是两个接口的两个方法而已。

  compare是Comparatable的方法,compareTo是Comparator的方法。

 

 

  方法一:

  C# CODE

string a = "123456789";      
a = int.Parse(a).ToString("##-###-####");      
Console.Write(a);

  方法二:

C# CODEstring a = "123456789";      
a = a.Insert(5, "-").Insert(2, "-");      
Console.Write(a);

  方法三:

  C# CODE

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication1{  
class Program  {    
static void Main()    
{      
string a = "123456789";      
Regex reg = new Regex(@"^(d{2})(d{3})(d{4})$");      
a = reg.Replace(a, "$1-$2-$3");     
Console.Write(a);    
}      
}}

  7.交换两个指定位置字符的4种方法

  方法一:

  C# CODE

static void Main()    
{      
string s = "123456789";      
SwapChar(ref s, 3, 6);      
Console.Write(s.ToString());    
}    
static void SwapChar(ref string s, int i1, int i2)    
{      
char temp = s[i1];     
char temp1 = s[i2];      
s = s.Remove(i1, 1).Insert(i1, temp1.ToString());      
s = s.Remove(i2, 1).Insert(i2, temp.ToString());   
}



相关教程