26.08.2009, 16:44 | #1 |
Участник
|
удалить пробелы в начале и в конце строки
Dynamics AX 4.0
|
|
26.08.2009, 16:47 | #2 |
Участник
|
А что в DAX 4.0 вот так нельзя написать
X++: strltrim(strrtrim()); |
|
|
За это сообщение автора поблагодарили: Максим Gall (1). |
26.08.2009, 16:47 | #3 |
Участник
|
Удаление пробелов в начале и в конце:
X++: public static str trimString(str _str, container _trimStr = [" "]) { int counter; str lTrim = _str; str rTrim; //удаление пробелов в начале for(counter = strlen(_str); counter >= 1 ; counter--) { if(confind(_trimStr, strdel(lTrim, 1, counter - 1))) { lTrim = strdel(lTrim, counter, strlen(lTrim)); } else break; } //удаление пробелов в конце rTrim = lTrim; for(counter = 1; counter <= strLen(lTrim) ; counter++) { if(confind(_trimStr, strdel(rTrim, 2, strlen(rTrim)))) { rTrim = strdel(rTrim, 1, 1); } else break; } return rTrim; } |
|
26.08.2009, 16:57 | #4 |
Участник
|
Что-то я не понял зачем так сложно? Вам же написали как в одну строку производится данная операция.
|
|
26.08.2009, 17:02 | #5 |
Axapta
|
А в общем случае, если надо удалить не пробелы, а другую группу симовлов, то, например, вот так:
X++: static void DeleteLeadingEndStr(Args _args) { str s = ' xxx '; str leadStr = ' '; str endStr = ' '; boolean isFirst = true; boolean isLast = true; ; while (isFirst) { isFirst = (strDel(s, strLen(leadStr)+1, strlen(s)-strLen(leadStr)) == leadStr); if (isFirst) s = strDel(s,1,strLen(leadStr)); } while (isLast) { isLast = (strDel(s, 1, strlen(s)-strLen(endStr)) == endStr); if (isLast) s = strDel(s, strlen(s)-strLen(endStr)+1,strLen(endStr)); } info(s); } |
|
26.08.2009, 17:04 | #6 |
Участник
|
Прежде, чем изобретать собственные функции посмотрите статические методы класса Global, начинающиеся с символов "str". Удаление ведущих и концевых пробелов это метод
Global::strLRTrim() Кроме того, есть еще функции ядра, список и описание которых можно найти в ветке \System Documentation\Functions Это функции, также начинающиеся с "str" |
|
26.08.2009, 20:36 | #7 |
Дмитрий Ерин
|
В дополнение к предыдущему оратору - обязательно ознакомьтесь с классом TextBuffer. Сэкономите кучу времени
|
|
27.08.2009, 10:05 | #8 |
Moderator
|
А если вдруг нужен более расширенный вариант - с удалением лишних пробелов в середине строки...
Цитата:
Сообщение от Gustav
В Excel есть замечательная функция рабочего листа TRIM (в русской версии - СЖПРОБЕЛЫ). Она не только удаляет ведущие и концевые пробелы, как это делают функции strLTrim и strRTrim в X++ (или LTrim и RTrim в VBA, Oracle и т.д.), но и оставляет между словами только по одному пробелу, например:
Код: TRIM(" Доход за первый квартал ") равняется "Доход за первый квартал". |
|
|
За это сообщение автора поблагодарили: mazzy (2), Silphidae (1). |
Теги |
ax4.0, trim, пробел |
|
|