C#操作字符串经验总结Word文档下载推荐.docx
- 文档编号:21197475
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:13
- 大小:19.11KB
C#操作字符串经验总结Word文档下载推荐.docx
《C#操作字符串经验总结Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C#操作字符串经验总结Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
"
1234"
;
int
myint
0;
Convert.ToInt32(myString);
Console.Write(myint+"
\r\n
);
Int32.Parse(myString);
Int32.TryParse(myString,
out
myint);
\r\n"
}
}
表面上看,可见3个方法都实现了同样的效果!
那么我们把代码改一下:
//string
null;
这次字符串是null,那么运行结果会怎样呢?
这是因为如果解析错误:
Convert.ToInt32()在null时不抛异常而是返回0;
Int32.Parse()要抛异常;
Int32.TryParse()不抛异常,会返回true或false来说明解析是否成功,如果解析错误,调用方将会得到0值。
由于Convert.ToInt32()在null时我们看不到Int32.TryParse()的运行结果所以再分调试和不调试来看结果的差异:
调试:
不调试:
其实一般出bug毕竟属于少数,而且大家都会测试保证不出bug,那么我们最关心的或许就是性能。
再把代码修改一下:
2
myString1
//清清月儿
Console.Write(System.DateTime.Now.ToString()+"
+System.DateTime.Now.Millisecond.ToString()
+
for
(int
i
<
1000000;
i++
)
Convert.ToInt32(myString1);
Console.Write(myint
Console.Write(System.DateTime.Now.ToString()
System.DateTime.Now.Millisecond.ToString()
myString2
i++)
Int32.Parse(myString2);
myString3
Int32.TryParse(myString3,
我们让3个方法执行100万次转换看毫秒的差异:
为了准确多做几次测试:
第二次
第三次
第一次第二次第三次
Convert.ToInt32()
532-204=328
1163-750=413
782-469=313
Int32.Parse()
844-532=312
360-63=297
1094-782=312
Int32.TryParse()
1141-844=297
657-360=297
375-94=281
其实我们可以得出结论:
3个方法几乎没有差异!
如果真要追求完美那么性能的差异是:
Int32.TryParse()优于Int32.Parse()优于Convert.ToInt32()。
所以个人建议:
.NET1.1下用Int32.Parse();
.NET2.0用Int32.TryParse()。
那么为什么会这样呢?
其实这些数据不是偶然的,因为:
Convert.ToInt32会把最终的解析工作代理给Int32.Parse;
Int32.Parse会把最终的解析工作代理给Number.ParseInt32;
Int32.TryParse会把最终的解析工作代理给Number.TryParseInt32。
至于其他进制的转换请参考MSDN。
重载参数即可!
我们可以把12
33
456
12342
拼起来就是一个字符,因为很多时候我们觉得处理只有几个组的时候用数组很麻烦所以我们用“|”或者“,”等等把他们拼起来在需要的时候用Split打散即可。
下面列举一些用法,不做性能分析了。
方法一:
static
args)
aa
1234,234523,4324,324"
string[]
cc
aa.Split(new
char[]
...{
'
'
});
foreach
(string
bb
in
cc)
{
Console.Write(bb
方法二:
string
str
aa.Split('
str)
方法三:
a
1,2,3,4,5,6,7,8,9"
b
"
c
Split(a,
b);
c)
public
Split(string
input,
pattern)
arr
System.Text.RegularExpressions.Regex.Split(input,
pattern);
return
arr;
实现把文章按空格打散:
Main
()
a="
While
laughter
is
very
aerobic
activity
engages
every
single
organ
system"
b="
[]c=TestDoWhile.Split(a,b);
foreach(string
c)
Console.Write(bb+"
input,string
System.Text.RegularExpressions.Regex.Split(input,pattern);
@"
没有什么区别
不过@是忽略转义字符的!
比如"
abc\n"
输出abc并加个换行
但是@"
输出abc\n无换行!
取消转义
比如你想将C:
\windows\system这个字符串赋值给str
一般情况下要:
C:
\\windows\\system"
因为在C#中,\\才会被转义成一个\
又例如\n就是换行符
而加入@,就可以这样:
\windows\system"
这又是一个经常遇到的问题。
保留2位有效小数(和保留N位一样的参数不同而已):
Main()
Double
12.345678;
Console.Write(Math.Round(a,2));
四舍五入:
//是要四舍五入的数
Console.Write((a*10000+0.5)/10000);
1.设置web.config文件。
system.web>
......
globalization
requestEncoding="
gb2312"
responseEncoding="
culture="
zh-CN"
fileEncoding="
/>
/system.web>
2.传递中文之前,将要传递的中文参数进行编码,在接收时再进行解码。
>
进行传递
Name
中文参数"
Response.Redirect("
B.aspx?
Name="
+Server.UrlEncode(Name));
进行接收
Request.QueryString["
Name"
];
Response.Write(Server.UrlDecode(Name));
3.如果是从.HTML文件向.Aspx文件进行传递中文参数的话(即不从后台用Redirect()方法进行Url转换)。
一样要将传递的中文参数进行编码,在接收时再进行解码。
script
language="
JavaScript"
function
GoUrl()
var
location.href
+escape(Name);
}
/script>
body
onclick="
GoUrl()"
一般来说。
设置web.config文件就可以了。
但是如果你用JavaScript调用webservice方法的话(往webservice里面传递中文参数)。
设置web.config文件好象无效。
123456789"
int.Parse(a).ToString("
##-###-####"
Console.Write(a);
a.Insert(5,
-"
).Insert(2,
System.Text.RegularExpressions;
Main()
Regex
reg
new
Regex(@"
^(d{2})(d{3})(d{4})$"
reg.Replace(a,
$1-$2-$3"
s
SwapChar(ref
s,
3,
6);
Console.Write(s.ToString());
i1,
i2)
char
temp
s[i1];
temp1
s[i2];
s.Remove(i1,
1).Insert(i1,
temp1.ToString());
s.Remove(i2,
1).Insert(i2,
temp.ToString());
//SwapChar(s,
Console.Write(SwapChar(s,
6).ToString());
SwapChar(string
p1,
p2)
if
((p1
==
p2)
||
0)
(p2
0)))
s;
s.Length)
s.Length))
vChars
s.ToCharArray();
vChars[p1]
(char)(vChars[p2]
|
(vChars[p2]
vChars[p1])
&
0);
string(vChars);
str,
a,
b)
newStr
str.ToCharArray();
newStr[a]
str[b];
newStr[b]
str[a];
string(newStr);
方法四:
(p1
p
p1;
p1
p2;
p2
p;
Regex.Replace(s,
^(.{"
})(.)(.{"
-
1)
})(.)(.*)$"
$1$4$3$2$5"
8.“%10”的妙用
...{
Random
r
Random();
Console.WriteLine(r.Next()
%
10);
//1-9
Consol
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 操作 字符串 经验总结