辰凌风

"Forget What Made Them Successful " Trap

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

关于字符串的获取或一段字符的问题的情况很多的,比如说,将获取的字符串从第n位,取到第m位,在c#下,我们可以使用Substring()来取得

比如:

 

string str = "abcdefg";
str.Substring(
0, 2);

 

Substring是从0位开始的,上面的结果也就是:从左至右,获取到:“ab”两个字符,而如果想获取最后两个字符咋办呢?

 

string str = "abcdefg";
str.Substring(str.Length
- 2, 2);

 

通过对字符的长度,然后减去所要获取的长度,就OK了。

如果,字符串内的内容是数字。当我在textBox1中输入的内容为:12345。我们在后面处理的时候,需要按照数字来显示,但是需要从小数点向前取,每次取两位,保证我能取到8位的值,那应该如何做呢?

首先,我们可以按照上面的办法来获取,可以依次获取到 45、23 当获取到 第一位的"1"时候怎么处理?

如果是小数,比如:12345.6我们就可能是:56 34 12这样获取,那具体做则么做呢?

首先按照字符串的思想,就是在前面填充,空格或者这里是数字,就填充0:

 

代码
int n = 8;//所要获取的长度
string str = "12345";
if (str.Length < n)
{
int strLen = n - str.Length;
for (int i = 0; i < strLen; i++)
{
str
= "0" + str;
}
}

 

完成后,在按照上面的办法来获取,字符串,然后再转换成数字。

这样的思路是不错,但是需要转一个圈。而遇到小数的情况,就比较头疼了,需要转成数字,乘以一个数,然后再转成字符串,获取需要的部分,最后在转成数字。

 

代码
int n = 8;//所要获取的长度
int m = 1;//小数点后,有效的位数
string str = "12345";

str
= Convert.ToString( Convert.ToInt32(str) * Math.Pow(10, m));
if (str.Length < n )
{
int strLen = n - str.Length;
for (int i = 0; i < strLen; i++)
{
str
= "0" + str;
}
}

 

 

 

 

既然是数字,我们就直接转成数字来获取不是很方便~

OK,那将“12345”转成12345,整型的情况是比较容易的,每次去两位,那就是 模100 

 

12345%100 = 45
(
12345/100)%100 = 23
(
12345/10000) = 1

 

这样看,写起来好烦,其实,我们如果把这些换个写法:

 

(12345/Math.Pow(100,0))%100 = 45
(
12345/Math.Pow(100,1))%100 = 23
(
12345/Math.Pow(100,2))%100 = 1

 

这样的话,我们就可以换个写法了,

依然以需要8位来写:

 

代码
int n = 8;//所要获取的长度
string str = "12345";


int[] data = new int[n / 2];
for (int i = 0; i < n / 2; i++)
{
data[i]
= Convert.ToInt32( (Convert.ToInt32(str) / Math.Pow(100, i))) % 100;

}

for (int i = 0; i < n / 2; i++)
{
MessageBox.Show(data[i].ToString());
}

 

这里也同样遇到需要处理小数的情况,比如说,我小数点前有6位有效,小数点后有1位有效,那应该如何取呢?

我们同样需要 乘以一个数,然后将小数部分拉倒小数点前。然后再按照前面的办法来操作;

 

代码
int n = 8;//所要获取的长度
int m = 1;//小数点后,有效的位数
string str = "12345";

int strInt = Convert.ToInt32( Convert.ToInt32(str) * Math.Pow(10, m));

int[] data = new int[n / 2];
for (int i = 0; i < n / 2; i++)
{
data[i]
= Convert.ToInt32(strInt / Math.Pow(100, i)) % 100;

}

for (int i = 0; i < n / 2; i++)
{
MessageBox.Show(data[i].ToString());
}

 

 

 

 

 

 

 

 

posted on 2010-07-01 18:57  辰凌风  阅读(648)  评论(0编辑  收藏  举报
忒客淘-我的站