【问题标题】:Replacing list values with Unidata用 Unidata 替换列表值
【发布时间】:2020-02-26 01:05:50
【问题描述】:

我有一个看起来像这样的值列表;

12345678/12345

在列表中的所有 ~160 行中,我想删除 '/' 和它之后的值,在每行上只保留 / 之前的第一位。

最好的方法是什么?

我查看了“替换”和“更改”的帮助页面,但无法确定如何引用“/”之前的第一个值。

提前谢谢你。

【问题讨论】:

  • 作为旁注,所有值的长度都相同,在“/”之前和之后,如果这有助于/有所不同的话。
  • 您是把这些当作程序中的变量还是作为选择列表来阅读?我可能会使用 FIELD(Value,'/',1) 在重击之前返回所有内容。如果您提供您想要达到的目标,我可以更具体。
  • 嗨@VanAmburg - 感谢您的回复。它们在一个选择列表中。

标签: unidata


【解决方案1】:

正则表达式并不是 U2 系列的真正强项,但它的优点在于它使用分隔符来分隔字符串。您提到这是在一个选择列表中,根据您的标准,您可以通过以下两种方式之一进行操作。

  1. 值由正斜杠分隔
  2. 分隔符始终位于字符串的相同字符位置。
  3. 值出现在选择列表中。 (我认为这意味着它们是文件中的 ID,在本练习中,我们将该文件称为 FOO。

如果您知道正斜杠仅用作分隔符,并且在您提到的分隔符位置之前或之后不存在于字符串中是一致的,您可以使用 FIELD,它允许您将字符上的字符串实质上拆分为字符串数组并引用要返回的该数组的多个值之一。

SELECT FOO SAVING EVAL "FIELD(@ID,'/',1)"

或者如果值重复并且您想要删除重复项

SELECT FOO SAVING UNIQUE EVAL "FIELD(@ID,'/',1)"

如果您不能保证没有正斜杠,您可以只使用字符位置参考。这可能是知识有限的最佳选择。

SELECT FOO SAVING EVAL "@ID[1,8]"

SELECT FOO SAVING UNIQUE EVAL "@ID[1,8]"

【讨论】:

    猜你喜欢
    • 2015-06-26
    • 2020-07-11
    • 2019-04-07
    • 2019-07-28
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多