日期:2014-05-18  浏览次数:21087 次

c# 数字类文本怎么自动按格式转换
一个文本框 textbox 
一个提交按钮 button  

向数据库写入6位数字为一组的文本 间隔符号 .或; 都是英文半角状态下的输入字符

现在需要实现文本自动按格式转换

譬如 252863 253864 257888 268888.。。。。。。。。
都是6位数字为一组的文本 有时只要 252863 一组即可 有时252863 253864 257888 三组也行 手工输入也还行
但有时要输入 252863-252899之间连续共37组数字 手工输入不现实 只能252863-99 这样快捷输入 但进数据库时 还必须是37组独立的数字文本 而且有时 是连续几段 这样的数字组 怎么实现 他们在数据库里面 不论怎么输入 都是6个数字一组的数字文本? 间隔符是.或;

------解决方案--------------------
我不太明白楼主什么意思
------解决方案--------------------
用SPLIT(‘。’)函数可以试一下
------解决方案--------------------
描述不清晰,未能了然。
------解决方案--------------------
按我对楼主意思的理解,不知道下面的思路行不行呢?

检查数据格式,按不同的格式给予不同的处理
(1)单纯的数字格式:就直接传入DB
(2)数字间,有“间隔符号 .或;”的,就按间隔符号拆分后传入DB
(3)出现 - 的,先获取 - 后面数字的位数,假如是 252863-99,先获取 - 后面数字的长度,为2,然后获取 - 前数字的 前 4(总长度-后面数字的长度,即 6-2=4) 个数字。然后,使用一个循环,从 原数字的后2位,一直加到后数字的大小,即从 63~99.前4码使用原数字,后两码循环组出。然后将其传入DB
------解决方案--------------------
C# code
var str = "252863 253864;257888 268888.252863-99";
var list = new List<int>();

var arr = str.Split(new char[] { ' ', '.', ';' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var item in arr)
{
    if (item.Length > 6)
    {
        var m = int.Parse(item.Substring(0, 4) + item.Substring(7, 2));
        for (int i = int.Parse(item.Substring(0, 6)); i <= m; i++)
        {
            list.Add(i);
        }
    }
    else
    {
        list.Add(int.Parse(item));
    }
}