自订字符串转换

时间:2017-05-04 09:48:34

标签: c# sql access-vba

我需要一些字符串转换的帮助

它应该能够双向转换字符串

实施例

  • 1090512300至9.5.123
  • 1090501300至9.5.13

任何帮助将不胜感激

第一个字符串(1090512300)将始终具有相同的长度,但第二个(9.5.123)字符串将不会

转换逻辑如下1 xx yy zzz 00 所以字符串1将是1xxyyzzz00和字符串2 xx.yy.zzz,其中所有零都被删除

我尝试使用数字格式,但由于事实字符串2每次都没有相同的长度而无法正常工作

1\00\0\0000\0\0

我更喜欢可以执行此转换的sql函数,但我不知道如何完成此操作

我在C#中提出了以下代码

如何将其转换为vba或sql

private static void Main(string[] args)
    {
        oldToNew("7.1.14");
        oldToNew("9.5.123");
        oldToNew("9.5.13");
        oldToNew("12.1.10");
        oldToNew("12.10.10");
        Console.ReadLine();

        NewToOld("1050126000");
        NewToOld("1060104900");
        NewToOld("1060105000");
        NewToOld("1070414200");
        Console.ReadLine();
    }
    static public void oldToNew(string Code)
    {
        string a, b, c, manCode;
        manCode = Code;
        a = manCode.Substring(0, manCode.IndexOf("."));
        manCode = manCode.Remove(0, manCode.IndexOf(".") + 1);
        b = manCode.Substring(0, manCode.IndexOf("."));
        manCode = manCode.Remove(0, manCode.IndexOf(".") + 1);
        c = manCode.Substring(0);
        a = Convert.ToInt16(a).ToString("D2");
        b = Convert.ToInt16(b).ToString("D2");
        c = Convert.ToInt16(c).ToString("D3");

        manCode = "1" + a + b + c + "00";
        Console.WriteLine("Converted \t" + Code + "\t\t:\t" + manCode);
    }

    static public void NewToOld(string Code)
    {
        string a, b, c, manCode;
        manCode = Code;
        manCode = manCode.Remove(0, 1);
        a = Convert.ToInt16(manCode.Substring(0, 2)).ToString();
        manCode = manCode.Remove(0, 2);
        b = Convert.ToInt16(manCode.Substring(0, 2)).ToString();
        manCode = manCode.Remove(0, 2);
        c = Convert.ToInt16(manCode.Substring(0, 3)).ToString();
        manCode = a + "." + b + "." + c;
        Console.WriteLine("Converted \t" + Code + "\t:\t" + manCode);
    }

0 个答案:

没有答案