首页 > 解决方案 > 在结构化文本的值中查找第 n 个值

问题描述

我有VB和c#的经验,但没有ST。我试图在一个值中找到第 n 个数字的值。即 654321 当 n = 3 时的第 n 个值应该返回 4。在 ST 中可以做到这一点吗?

标签: st

解决方案


我建议将数字转换为字符串,然后您可以从字符串中找到第 n 个字符。当然,你没有告诉你的数字 654321 是字符串还是数值,但这并不重要。

下面的代码从左边开始取第三个字符。如果您需要从右边获取数字,您可以使用 LEN() 等函数编辑代码。

VAR
    TestNumber          : DINT;
    TestString          : STRING;
    NthDigitAsString    : STRING(1);
    NthDigit            : BYTE;
END_VAR

TestNumber := 654321;

//Convert to string
TestString := DINT_TO_STRING(TestNumber);

//Find the 3rd character (counting from from left)
NthDigitAsString := MID(TestString, 1, 3);

//Convert the character to number (if necessary)
NthDigit := STRING_TO_BYTE(NthDigitAsString);

这当然是一个长版本。找到下面的单行:

NthDigit := STRING_TO_BYTE(MID(DINT_TO_STRING(654321), 1, 3));

推荐阅读