首页 新闻 会员 周边

关于字符串的提取

0
悬赏园豆:5 [已解决问题] 解决于 2013-01-18 11:28

string txtDH=1631.10.002

我现在要提取上面的那个变量最后一个“.”后面的002,然后将其加1,该怎么弄呢?

谢谢大家

pengjw的主页 pengjw | 初学一级 | 园豆:3
提问于:2013-01-17 16:46
< >
分享
最佳答案
0
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(IncreaseOne("1631.10.002"));
            Console.WriteLine(IncreaseOne("5465.5121.85.215"));
            Console.WriteLine(IncreaseOne("123"));
            Console.Read();
        }

        private static string IncreaseOne(String num)
        {
            string[] strs = num.Split('.');
            if (strs.Length > 1)
            {
                string temp = strs[strs.Length - 1];
                int len = temp.Length;
                int lastNum = Convert.ToInt32(temp) + 1;
                strs[strs.Length - 1] = lastNum.ToString().PadLeft(len, '0');
            }
            else
            {
                strs[strs.Length - 1] = (Convert.ToInt32(strs[strs.Length - 1]) + 1).ToString();
            }
            string result = string.Empty;
            foreach (string str in strs)
            {
                if (result.Length == 0)
                    result += str;
                else
                    result = result + ("." + str);
            }
            return result;
        }
    }

结果

 

 

收获园豆:3
滴答的雨 | 老鸟四级 |园豆:3660 | 2013-01-17 17:21

太谢谢你了,这就是我想要的。但是我有个疑问

string result = string.Empty;
           
foreach (string str in strs)
            {
               
if (result.Length == 0)
                    result
+= str;
               
else
                    result
= result + ("." + str);
            }
那个if(result.Length==0)的判断可不可以不要呢?因为我们定义的result本来就是string.empty?这里我没看懂。

还有我现在担心的一个问题是当客户一次性著录的数据较多时,1631.10.003最后的一部分一直增加到1631.10.009的时候再增加一条,按照上面的思路是不是变成了1631.10.0010;但是最后想要的结果是1631.10.010.谢谢师父

pengjw | 园豆:3 (初学一级) | 2013-01-18 09:59

嘿嘿,我读懂了。(1)那个对result判断是有用的,针对于dh=123 的情况。(2)上面的PadLeft()方法就是解决那个对齐的问题,可以确保1631.10.010的结果。

哈哈,太开心了!我把这段代码做了笔记了。再次感谢!

pengjw | 园豆:3 (初学一级) | 2013-01-18 10:19

@pengjw: 

1、if(result.Length==0)这个判断是因为1631.10.002拆开的时候为1631和10和0023个字符串,最后合并的时候第一个1631前面不需要加"."...

2、结果会是1631.10.010  ,最后一位的长度由此语句实现.PadLeft(len, '0');之前已经记录了len长度为3,所以结果不会是0010

滴答的雨 | 园豆:3660 (老鸟四级) | 2013-01-18 10:19
其他回答(2)
0

txtDH.substring(txtDH.lastIndex('.')+1)

收获园豆:1
chenping2008 | 园豆:9836 (大侠五级) | 2013-01-17 16:57

嘿嘿,谢谢哦!

支持(0) 反对(0) pengjw | 园豆:3 (初学一级) | 2013-01-17 17:25

在吗?你教我的方法可以。我想实现这样的,

string txtDH=1631.10.002,因为是字符变量,我没法直接加1,所以截取最后的一部分加1,然后能返回txtDH= 1631.10.002,我该怎么弄呢?

支持(0) 反对(0) pengjw | 园豆:3 (初学一级) | 2013-01-18 09:51
0

int index=txtDH.lastIndexOf(".")你看看对不对吧,好像是这样用的

收获园豆:1
追逐,小天 | 园豆:197 (初学一级) | 2013-01-17 22:53

嗯,谢谢,得用substring函数的

支持(0) 反对(0) pengjw | 园豆:3 (初学一级) | 2013-01-18 09:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册