Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2012, 17:27   #1
Den-is
Новичок
Джуниор
 
Регистрация: 09.02.2012
Сообщений: 3
По умолчанию void TrimRight( char *s )

Здравствуйте, нужно написать функцию, которая обрезает пробелы в конце переданной ей строки. Функция должна быть написана в расчёте на работу с очень длинными строками с очень большим количеством пробелов. Сигнатура: void TrimRight( char *s ); Приведите реальный пример.
Den-is вне форума Ответить с цитированием
Старый 09.02.2012, 18:06   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Код писать не буду. Дам совет, в .NET Framework есть метод string.Trim(). Берешь рефлектор и достаешь оттуда код.
Hollander вне форума Ответить с цитированием
Старый 09.02.2012, 19:12   #3
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

Код:
using System;
using System.Text;

namespace Praktika
{


    class Entry
    {
        public static void Main()
        {
            string s = "sgsf sdfsdf sdfsdf sdfsdf sdfsdf sdfsdf weiojfewif sdfjsdf owejofjweof dsfs 3re fsdkfj 23f dsfsdf";
            unsafe
            {
                fixed (char* data = s.ToCharArray()) 
                MyTrim(data, s.Length); 
            }


        }

        unsafe public static void MyTrim(char* input, int size)
        {
            // almost c++ code goes here :)
        }
    }
}
rUs_LAN вне форума Ответить с цитированием
Старый 09.02.2012, 20:09   #4
Den-is
Новичок
Джуниор
 
Регистрация: 09.02.2012
Сообщений: 3
По умолчанию

а как же TrimRight?
да, совсем забыл, c#
Den-is вне форума Ответить с цитированием
Старый 09.02.2012, 20:25   #5
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Цитата:
Сообщение от Den-is Посмотреть сообщение
а как же TrimRight?
да, совсем забыл, c#
Там и справа и слева есть.

В общем вот:
Код:
private String TrimHelper(char[] trimChars, int trimType) {
            //end will point to the first non-trimmed character on the right 
            //start will point to the first non-trimmed character on the Left
            int end = this.Length-1; 
            int start=0; 

            //Trim specified characters. 
            if (trimType !=TrimTail)  {
                for (start=0; start < this.Length; start++) {
                    int i = 0;
                    char ch = this[start]; 
                    for( i = 0; i < trimChars.Length; i++) {
                        if( trimChars[i] == ch) break; 
                    } 
                    if( i == trimChars.Length) { // the character is not white space
                        break; 
                    }
                }
            }
 
            if (trimType !=TrimHead) {
                for (end= Length -1; end >= start;  end--) { 
                    int i = 0; 
                    char ch = this[end];
                    for(i = 0; i < trimChars.Length; i++) { 
                        if( trimChars[i] == ch) break;
                    }
                    if( i == trimChars.Length) { // the character is not white space
                        break; 
                    }
                } 
            } 

            //Create a new STRINGREF and initialize it from the range determined above. 
            int len = end -start + 1;
            if (len == this.Length) {
                // Don't allocate a new string is the trimmed string has not changed.
                return this; 
            }
            else { 
                if( len == 0) { 
                    return String.Empty;
                } 
                return InternalSubString(start, len, false);
            }
        }

Последний раз редактировалось Hollander; 09.02.2012 в 20:31.
Hollander вне форума Ответить с цитированием
Старый 09.02.2012, 20:46   #6
Den-is
Новичок
Джуниор
 
Регистрация: 09.02.2012
Сообщений: 3
По умолчанию

спасибо, буду разбираться
Den-is вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TrimRight C++ Sobaka_ru Помощь студентам 4 05.12.2011 14:54
Проблема с программой. Нельзя преобразовать тип set of char к char Lasso Помощь студентам 5 07.06.2011 12:03
error C2440. Как конвертировать в 'void ' из 'char ' Mrbober Общие вопросы C/C++ 4 14.03.2011 22:43
преобразование типов char-const char student101 Помощь студентам 8 01.12.2010 20:45
Есть таблица - В ней три поля int, char, char нужно чтобы данные заносились в таблицу Mysql Muahahaha PHP 8 27.03.2008 11:17