Я пытаюсь сделать так, чтобы такой товар, как WO123000, вышел как WO-123000. Вот код, но у меня он не работает.

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

Здесь WorkOrderNum - WO123000. Эта ошибка возникает из-за проблем миграции VB6.Format.

-1
user2311799 10 Апр 2014 в 16:39

3 ответа

Лучший ответ

Если длина строки остается постоянной:

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

Хотя я уверен, что есть лучший способ сделать это, который должен включать обработку ошибок и т. Д., Это была просто демонстрация!

1
Ric 10 Апр 2014 в 12:47

Если вам не нужно форматировать само число, следующее должно дать вам то, что вы хотите:

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);
}
1
Geoff 10 Апр 2014 в 13:06

Я предполагаю, что WO означает «Заказ на работу». Это наводит на мысль, что первые две буквы каждого заказа на работу будут WO. Это означает, что вместо форматирования вы можете просто сделать следующее:

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

Надеюсь, это помогло,

Родит

0
rodit 10 Апр 2014 в 12:50