zoukankan      html  css  js  c++  java
  • 关于获取字符串的某一段值的问题

    关于字符串的获取或一段字符的问题的情况很多的,比如说,将获取的字符串从第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());
    }
  • 相关阅读:
    leetcode 268. Missing Number
    DBSCAN
    python二维数组初始化
    leetcode 661. Image Smoother
    leetcode 599. Minimum Index Sum of Two Lists
    Python中的sort() key含义
    leetcode 447. Number of Boomerangs
    leetcode 697. Degree of an Array
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(1月3日)
    北京Uber优步司机奖励政策(1月2日)
  • 原文地址:https://www.cnblogs.com/lingfengchencn/p/1769419.html
Copyright © 2011-2022 走看看