如何将以下ScanDataLabel输出降低为价格?

时间:2018-07-26 14:00:20

标签: c# opos

条形码阅读器为我提供了以下字符串,显示在文本框static void SYSTEM_START_Function (UInt8 parameterSize, char* pointerToPassedParameters) { } 中。在数字字符串中,以下位置是价格7612345203508现在,我想用一个点来显示价格,如本示例76123452(0350)8

我该如何正确表示呢?

我的代码如下:

VS2010 C#

761234520350    Fr. 03.50

输出:textBox1.Text = axOPOSScanner1.ScanDataLabel; //Preis textBox1.Text += "\t" + "Fr." + axOPOSScanner1.ScanDataLabel.Remove( 0, 8 );

谢谢

2 个答案:

答案 0 :(得分:2)

尝试格式化字符串插值。如果价格末尾包含4位数字

string source = axOPOSScanner1.ScanDataLabel;

textBox1.Text = 
  $"{source}\tFr. {decimal.Parse(source.Substring(source.Length - 5, 4)) / 100:00.00}";

对于 Visual Studio 2010 (其中不支持字符串插值

string source = axOPOSScanner1.ScanDataLabel;

textBox1.Text = string.Format("{0}\tFr. {1:00.00}",
  source,
  decimal.Parse(source.Substring(source.Length - 5, 4)) / 100);

答案 1 :(得分:2)

这应该是本示例的窍门:

textBox1.Text += "\t" + "Fr. " + axOPOSScanner1.ScanDataLabel.Substring(8, 2) + "." + axOPOSScanner1.ScanDataLabel.Substring(10, 2);

但是要考虑到更长或更短的ScanDataLabel不会为您提供正确的数字或​​抛出ArgumentOutOfRangeException