-2
我需要一個字符串的轉換一些援助自定義字符串轉換
它應該能夠將字符串轉換左右逢源
例
- 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);
}
定義轉換規則。嘗試用VBA字符串函數(例如'Mid $()')實現它們。如果您有特定的問題/疑問,請在此處詢問。但就目前而言,這個問題並不適用於SO。 [問] – Andre
你需要展示你迄今爲止的嘗試,並解釋在所有情況下控制轉換的邏輯規則。 –
你可以用VBA函數做到這一點,這個函數可以從SQL查詢中調用(我猜它是你自從你標記SQL以來想要的)。是否可以擴展一些邏輯?如果你放棄前兩個數字(10),你的字符串總是有相同的長度? –