2014-04-10 57 views
-1

我試圖讓一個項目如WO123000以WO-123000的形式出現。這是代碼,但它不適合我。用String.Format添加一個「 - 」VB.Net

WorkOrder = String.Format("{0:##-######}", Trim(WorkOrderNum)) 

這是WorkOrderNum是WO123000的地方。此錯誤源自VB6.Format遷移問題。

+0

爲什麼.NET會自動將字符串「WO123000」分開? –

+0

我只是想讓字符串在第一個字符後面加一個破折號。 – user2311799

+0

它們可以是任何字符。不只是前兩個字母。 – user2311799

回答

1

如果字符串的長度保持不變:

Dim WorkOrderNum = "WO123000" 
Dim testStr As String = String.Format("{0}-{1}", WorkOrderNum.SubString(0, 2), WorkOrderNum.SubString(2, 6))  
Console.WriteLine(testStr) 

'outputs WO-123000 

雖然我敢肯定有這樣做的更好的辦法,其中應包括錯誤處理等,這是隻是一個演示!

0

我假設WO代表'工作訂單'。這表明每個工單的前兩個字母都是WO。這意味着,你可以做以下的,而不是格式:

Dim WorkOrderNum As String = "WO123000" 
Dim OutputOrderNum As String = WorkOrderNum.Replace("WO", "WO-") 

希望這有助於,

Rodit

+0

但是,它不一定是。如果他們想要,它可能是11111111 – user2311799

+0

然後它就像格式化一個隨機字符串@ user2311799 – rodit

1

如果您不需要格式本身的數量,下面應該給你你想要什麼:

WorkOrder = Trim(WorkOrderNum).Insert(2, "-") 

如果輸入的變化很大(如您的評論指出它),那麼你一定想先抽取號碼,然後格式化:

string WorkOrder = "abc123"; 
int woNum; 
if (int.TryParse(System.Text.RegularExpressions.Regex.Match(WorkOrder, @"\d+").Value, out woNum)) 
{ 
    return String.Format("WO-{0:00000}", woNum); 
}