2016-02-05 141 views
0

我正在尝试添加一个新的计算列,该列计算字符串中分号的数量并向其中添加一个。所以我列中包含了一堆别名,我需要知道每行有多少个。Spotfire:计算字符串中某个字符的数量

例如, A; B; C; d

因此,基本上,这意味着有4别名(3半个冒号+ 1)

需要超过2万行做到这一点。请帮助!

+0

也许'split'上'每一行;'再算上劈叉? – sideroxylon

回答

3

基本思路是减去你的字符串的长度,不;字符从它的原始长度:

len([columnName])-len(Substitute([columnName],";",""))+1

1

这是一个正则表达式:

Len(RXReplace([Column 1], "(?!;).", "", "gis"))+1 

RXReplace需要作为参数:

  1. 你想要使用的字符串(在这种情况下,它在第1列上)
  2. 要使用的正则表达式(这里是(?!;))。 )
  3. 你想要什么,以取代与比赛(空白在这种情况下,这样 这是正则表达式匹配一切都被删除)
  4. 最后一个参数,说你怎么想它的工作(我们传递 在地理信息系统,这意味着更换所有比赛不只是第一个,忽略情况下,更换新行)

我们在Len这让我们分号的量把这个包,因为这是所有剩下最后我们把它加1得到最终结果。

您可以在此处详细了解正则表达式:https://msdn.microsoft.com/en-us/library/az24scfc(v=vs.110).aspx但简而言之,它说匹配的一切,是不是一个分号。

你可以阅读更多关于RXReplace和Len这里:https://docs.tibco.com/pub/spotfire/6.0.0-november-2013/userguide-webhelp/ncfe/ncfe_text_functions.htm