Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите со строкой, Убрать лишние пробелы 
:(
    Опции темы
Riccon
Дата 17.11.2005, 02:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 5.5.2004

Репутация: нет
Всего: нет



Есть строка.

Код

string str = "t text     [text]  texttext   [text]      text - te xt";


Нужно убрать все пробелы по бокам контейнеров [text], но остальные должны остаться.
Результат может выглядеть так: t text[text]texttext[text]text - te xt

Подскажите, каким способом можно проделать такой финт?
PM MAIL   Вверх
lovermann
Дата 17.11.2005, 04:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 28.12.2004
Где: Прага

Репутация: 1
Всего: 8



Примени метод trim() на substring той части стринга, где ты хочешь удалить пробелы.
PM WWW ICQ   Вверх
mr.DUDA
Дата 17.11.2005, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Используя регулярные выражения, можно сделать это в 2 строки:

Код

using System;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Class1
    {
        static void Main()
        {
            string str =  "  [text]  t text [text] texttext [text] text - te xt [text]   ";
            str = new Regex(@"(\s*\[text\]\s*)").Replace(str, "[text]");
        }
    }
}



--------------------
user posted image
PM MAIL WWW   Вверх
Riccon
Дата 17.11.2005, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 5.5.2004

Репутация: нет
Всего: нет



Удобно, но как быть, если текст внутри [] произвольный, хоть всегда и одной длины?
PM MAIL   Вверх
Riccon
Дата 17.11.2005, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 5.5.2004

Репутация: нет
Всего: нет



Всё, справился. Спасибо огромное за ответы.
PM MAIL   Вверх
mr.DUDA
Дата 17.11.2005, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Тогда код будет выглядеть вот так:
Код
using System;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Class1
    {
        static void Main()
        {
            string str = "[text] t text [1345] texttext [.X0#] text - te xt [What] ";
            string str2 = new Regex(@"\s*\[(?<MyText>.{4})\]\s*").Replace(str, "[${MyText}]");

            Console.WriteLine("Было  :" + str);
            Console.WriteLine("Стало :" + str2);
        }
    }
}


Регулярное выражение:

\s*\[(?<MyText>.{4})\]\s*

оно означает: взять все последовательности символов, окруженные пробелами и знаками табуляции \s* , начинающиеся квадратными скобками \[ и оканчивающиеся квадратными скобками \] , сохранить их в именованном поле (?<MyText> ... ); последовательность символов в квадратных скобках содержит любые 4 символа - .{4}

Строка для замены:

[${MyText}]

она означает: подставить вместо найденных последовательностей новую последовательность символов, состоящую из значений именованного поля ${MyText}, окружённую квадратными скобками.


--------------------
user posted image
PM MAIL WWW   Вверх
Riccon
Дата 17.11.2005, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 5.5.2004

Репутация: нет
Всего: нет



Супер, спасибо большое.

Это сообщение отредактировал(а) Riccon - 17.11.2005, 15:56
PM MAIL   Вверх
mr.DUDA
Дата 17.11.2005, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Всегда рад помочь !


--------------------
user posted image
PM MAIL WWW   Вверх
Riccon
Дата 17.11.2005, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 5.5.2004

Репутация: нет
Всего: нет



А можно расширить шабон, указав, что внутрях скобок должны быть только цифрs?
PM MAIL   Вверх
Riccon
Дата 17.11.2005, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 5.5.2004

Репутация: нет
Всего: нет



И еще последний вопрос:
Код

string str = "[#S09] t text [1045] text0text [.X0#] text 0 te xt [What] ";

Как в этих блоках найти 0 и грохнуть, нетрогая эти символы вне блока?
PM MAIL   Вверх
mr.DUDA
Дата 17.11.2005, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Riccon @ 17.11.2005, 14:57)
А можно расширить шабон, указав, что внутрях скобок должны быть только цифрs?

Можно, если символ "точка" в паттерне заменить на \d

Цитата(Riccon @ 17.11.2005, 15:18)
Как в этих блоках найти 0 и грохнуть, нетрогая эти символы вне блока?

Вот этого я не знаю. Не такой я маньяк по этим регэкспам, как хотелось бы... smile


--------------------
user posted image
PM MAIL WWW   Вверх
Riccon
Дата 18.11.2005, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 5.5.2004

Репутация: нет
Всего: нет



Ясно, спасибо.
А где можно найти нормальную инфу о регэекспах, желательно на русском?
PM MAIL   Вверх
mr.DUDA
Дата 18.11.2005, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



В гугле или яндексе море ссылок. Вот хотя бы: http://regexp.ru/


--------------------
user posted image
PM MAIL WWW   Вверх
Artiom
Дата 18.11.2005, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1031
Регистрация: 11.3.2003
Где: Минск\Баку

Репутация: нет
Всего: 17



Riccon
Вот здесь ссылки на учебники есть


--------------------
Если тебя жизнь трахает, значит, ты ещё живой
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0507 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.