AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.08.2009, 16:44   #1  
Максим Gall is offline
Максим Gall
Участник
 
6 / 12 (1) ++
Регистрация: 17.07.2009
удалить пробелы в начале и в конце строки
Dynamics AX 4.0
Старый 26.08.2009, 16:47   #2  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
А что в DAX 4.0 вот так нельзя написать

X++:
strltrim(strrtrim());
За это сообщение автора поблагодарили: Максим Gall (1).
Старый 26.08.2009, 16:47   #3  
Максим Gall is offline
Максим Gall
Участник
 
6 / 12 (1) ++
Регистрация: 17.07.2009
Удаление пробелов в начале и в конце:
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  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Что-то я не понял зачем так сложно? Вам же написали как в одну строку производится данная операция.
Старый 26.08.2009, 17:02   #5  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
А в общем случае, если надо удалить не пробелы, а другую группу симовлов, то, например, вот так:

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  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Прежде, чем изобретать собственные функции посмотрите статические методы класса Global, начинающиеся с символов "str". Удаление ведущих и концевых пробелов это метод

Global::strLRTrim()

Кроме того, есть еще функции ядра, список и описание которых можно найти в ветке

\System Documentation\Functions

Это функции, также начинающиеся с "str"
Старый 26.08.2009, 20:36   #7  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
В дополнение к предыдущему оратору - обязательно ознакомьтесь с классом TextBuffer. Сэкономите кучу времени
Старый 27.08.2009, 10:05   #8  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
А если вдруг нужен более расширенный вариант - с удалением лишних пробелов в середине строки...
Цитата:
Сообщение от Gustav Посмотреть сообщение
В Excel есть замечательная функция рабочего листа TRIM (в русской версии - СЖПРОБЕЛЫ). Она не только удаляет ведущие и концевые пробелы, как это делают функции strLTrim и strRTrim в X++ (или LTrim и RTrim в VBA, Oracle и т.д.), но и оставляет между словами только по одному пробелу, например:
Код:
TRIM(" Доход   за   первый    квартал   ") равняется "Доход за первый квартал".
... то можно так (подсказано Максимом Белугиным):
Цитата:
Сообщение от Gustav Посмотреть сообщение
X++:
static str trimLikeExcel(str _sourceString)
{
    TextBuffer buf = new TextBuffer();
    ;
    buf.setText(_sourceString);
    buf.replace('  +', ' ');
    return strLRTrim(buf.getText());
}
За это сообщение автора поблагодарили: mazzy (2), Silphidae (1).
Теги
ax4.0, trim, пробел

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Цветные строки в Grid Sergo DAX: База знаний и проекты 14 19.04.2012 10:02
При создании строки в закупке статус строки становится "Отменено" AlexUnik DAX: Функционал 4 27.09.2004 16:05
Создать/Удалить строки журнала Yprit DAX: Программирование 1 20.09.2004 08:54
Удалить пробелы в строке! Александр Костоусов DAX: Программирование 6 13.09.2004 11:25
Функция "Удалить строки" Oks DAX: Функционал 1 03.07.2002 18:09
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 03:38.