我试图在NetSuite保存的搜索结果输出的背景下实现以下目标。
1。删除第一个连字符(-)或冒号(:)之后的所有字符,包括其中两个字符之前的空格。
例如
输入:测试123-xyz:123
这应该输出为 test 123 ->,甚至应该删除连字符前面的空格。
我尝试了以下两个代码
SUBSTR({custitem123}, 0, INSTR({custitem123}, '-')-1)
SUBSTR({custitem123}, 0, INSTR({custitem123}, ':')-1)
它们本身可以很好地工作,所以我试图将它们组合到一个公式中,该公式将查找其中任何一个并删除其后的所有字符-除此之外,它还应该查找之前的任何空格连字符或冒号,什么也不要替换。不确定如何实现。
2。删除所有非字母字符和空格(如果有的话)。
例如输入: 1。测试XYZ
其输出应为: 测试XYZ
我尝试通过使用以下公式实现这一目标-
TRIM({class}, '[^A-Za-z ]', '')
此方法的问题是它无法替换Test的第一个字母之前的空格字符。我了解这是因为我告诉它跳过替换空格字符。我不知道如何告诉它仅替换它在第一个字母字符之前找到的空间。
简而言之,如何确定输出为: 测试XYZ
不是
测试XYZ(在“测试”前有一个空格)
答案 0 :(得分:1)
您可以将regexp_substr
用作
regexp_substr({custitem123}, '[^-]+')
仅从输入test 123
test 123 - xyz : 123
如果还添加trim
,则可以将周围的空格修剪为
例如trim(regexp_substr({custitem123}, '[^-]+'))
给出test 123
作为修剪后的输出。
答案 1 :(得分:0)
使用 RTRIM 而不是 Trim 来删除像这样的尾随空格:
RTRIM(regexp_substr({custitem123}, '[^-]+'))
test 123 - xyz : 123 解析为 test 123
也感谢您提出这个问题帮助我解决了我自己的类似问题:D