2016-02-05 5 views
0

Я пытаюсь добавить новый вычисленный столбец, который подсчитывает количество полуколоней в строке и добавляет к ней один. Итак, столбец i содержит кучу псевдонимов, и мне нужно знать, сколько для каждой строки.Spotfire: подсчитайте число определенного символа в строке

0 Например: 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 и Лен здесь: https://docs.tibco.com/pub/spotfire/6.0.0-november-2013/userguide-webhelp/ncfe/ncfe_text_functions.htm

Смежные вопросы