Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
添加带字符串的“-”VB.Net格式_Vb.net_Vb6 Migration - Fatal编程技术网

添加带字符串的“-”VB.Net格式

添加带字符串的“-”VB.Net格式,vb.net,vb6-migration,Vb.net,Vb6 Migration,我正在尝试将WO123000这样的项目作为WO-123000。这是代码,但它对我不起作用 WorkOrder = String.Format("{0:##-######}", Trim(WorkOrderNum)) 这就是WorkOrderNum是WO123000的地方。此错误源于VB6。格式迁移问题。如果字符串长度保持不变: Dim WorkOrderNum = "WO123000" Dim testStr As String = String.Format("{0}-{1}", Wo

我正在尝试将WO123000这样的项目作为WO-123000。这是代码,但它对我不起作用

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

这就是WorkOrderNum是WO123000的地方。此错误源于VB6。格式迁移问题。

如果字符串长度保持不变:

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

虽然我相信有更好的方法可以做到这一点,包括错误处理等,这只是一个演示

我假设WO代表“工单”。这将向我建议,每个工单的前两个字母将是WO。这意味着您可以只执行以下操作,而不是格式化:

Dim WorkOrderNum As String = "WO123000"
Dim OutputOrderNum As String = WorkOrderNum.Replace("WO", "WO-")
希望这有帮助


Rodit

如果您不需要设置数字本身的格式,则以下内容应为您提供所需内容:

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);
}

为什么.NET要自动拆分字符串WO123000?我只是想让字符串在第一个字符后加一个破折号。它们可以是任何字符。不仅仅是前两个字母。您是否也在尝试设置数字格式,或者它是否可靠?例如,您是否正在尝试将WO1转换为WO-00001?String.SubString无法修复的任何内容。或者很简单。但是,不一定要这样。如果他们愿意,可以是11111111,这就像格式化一个随机字符串@user2311799