24.03.2008, 18:49 | #11 |
Moderator
|
Аналог excel'ной функции TRIM
В Excel есть замечательная функция рабочего листа TRIM (в русской версии - СЖПРОБЕЛЫ). Она не только удаляет ведущие и концевые пробелы, как это делают функции strLTrim и strRTrim в X++ (или LTrim и RTrim в VBA, Oracle и т.д.), но и оставляет между словами только по одному пробелу, например:
Код: TRIM(" Доход за первый квартал ") равняется "Доход за первый квартал". X++: static str trimLikeExcel(str _sourceString) { // имитация табличной функции TRIM из Excel // удаляем пробелы до тех пор, пока между словами не останется только по одному пробелу str strTmp; int lenPrev, lenCurr; ; strTmp = strLRTrim(_sourceString); lenCurr = strLen(strTmp); do { lenPrev = lenCurr; strTmp = strReplace(strTmp, ' ', ' '); // многократная замена 2-х пробелов на 1 lenCurr = strLen(strTmp); } while (lenCurr != lenPrev); return strTmp; } Кстати, имеющаяся в VBA и Oracle функция Trim действует не более, чем как метод класса Global strLRTrim (т.е. просто выполняет оба действия - "левое" и "правое" - одновременно). Пробелы же между словами, которых может быть более одного, она не трогает. Коллеги, возможно, кто-то видит не столь очевидную, но более эффективную, комбинацию иных текстовых функций для достижения такого же результата - пожалуйста, делитесь соображениями, с удовольствием послушаю. |
|
Теги |
excel, rls, полезное, blog, axapta |
|
|