powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как убрать все символы ; в конце строки?
28 сообщений из 28, показаны все 2 страниц
Как убрать все символы ; в конце строки?
    #39814618
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
string s="vasya;;;;";

На выходе надо получить строку без ';'
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814622
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814623
stomsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

А чем символ ";" отличается от остальных? Если вместо него будут "." стоять их надо оставить или тоже отсечь?
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814631
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stomskyРолг Хупин,

А чем символ ";" отличается от остальных? Если вместо него будут "." стоять их надо оставить или тоже отсечь?

Вместо васи моежт быть в некоторых случаях, например, "Петро123;;;;;;;", но ';' - это важно.
Да, протормозил, Trim
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814640
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решение за два евро в час:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
var str = new[] { "abc", "abcd;;;;", ";;;ab", "ab;cd;efg;;;" };

var rx = new Regex("^(.*[^;]);*$");

foreach (var s in str)
{
    Console.WriteLine($"{s} -> {rx.Match(s).Groups[1]}");
}
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814641
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потратил примерно 4 минуты - с тебя 14 европейских центов. Оплата на пейпал.
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814643
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
string[] values = "1;2;3;4;;;;4;5;6;;;;".Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814653
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
Код: c#
1.
string[] values = "1;2;3;4;;;;4;5;6;;;;".Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);



Во-первых вернет массив а не строку, во-вторых вообще все точкисзапятой поудаляет.
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814656
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stomskyРолг Хупин,

А чем символ ";" отличается от остальных? Если вместо него будут "." стоять их надо оставить или тоже отсечь?спят на клаве на определенной клавише)). Под нос наверное)
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814658
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне сдается, что речь идет о каком-то парсинге CSV-файла. Если это так, то возьми готовый CsvHelper и не страдай ерундой.
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814677
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatРешение за два евро в час:


Код: c#
1.
2.
3.
     new[] { "abc", "abcd;;;;", ";;;ab", "ab;cd;efg;;;" }
                    .Select(x => Regex.Replace(x, ";+$", r => string.Empty))
                    .Aggregate(Console.Out, (a, b) => { a.WriteLine(b); return a; });
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814680
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то вас парни понесло.

Автор же написал:
Ролг ХупинДа, ..., Trim
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814681
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Зачотно. Про риплейс мне как-то с наскоку в голову не пришло. :))

Понравилось еще использование Aggregate, хотя я сам тоже так часто конкатенацию делаю:

Код: c#
1.
....Aggregate(new StringBuilder(), (b, s) => b.Append(s)).ToString();



Флюентная запись как-то изящнее смотрится, чем string.Join().
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814682
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
String.TrimEnd Method

Removes all trailing occurrences of a set of characters specified in an array from the current String object.
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814684
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЧто-то вас парни понесло.

Я когда давно еще работал консом у финнов, то столкнулся с их нацособенностью - они там не любят единственного решения проблемы - всегда надо предложить несколько вариантов да еще и анализ расписать со всеми адвантаджами и дравбеками. Ну вот, мы и предлагаем сразу несколько решений
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814685
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatЕвгенийВ,


Понравилось еще использование Aggregate, хотя я сам тоже так часто конкатенацию делаю:


Код: c#
1.
2.
 var sArr = new[] { "abc", "abcd;;;;", ";;;ab", "ab;cd;efg;;;" };
                var mArr = string.Concat(sArr);


Хотя статики не круто
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814700
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Я что-то вспоминаю, что Concat не рекомендовали, там как-то было связано с CLS-compliancy или в этом роде. Кстати, что забавно, у стрингов нет перегруженного оператора "+" - компилятор просто заменяет s1 + s2 на string.Concat(s1, s2). Я это только лет через десять разработки на сишарпе случайно узнал
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814706
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,
Открой для себя ilspy https://github.com/icsharpcode/ILSpy/releases
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814710
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВfkthat,
Открой для себя ilspy https://github.com/icsharpcode/ILSpy/releases

Я что-то к телериковскому JustDecompile уже привык. В первых сезонах он еще прилично глючил, но сейчас уже давно вылизали.
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814729
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Да, кстати, Concat еще оказывается по скорости быстрее на 10-20% чем StringBuilder. Причем, даже если у билдера загодя задавать капасити, то ситуация не меняется. Ну что же, будем теперь знать и использовать
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39814746
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЧто-то вас парни понесло.

Автор же написал:
Ролг ХупинДа, ..., Trim

да, пусть несёт, пятница же
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39815236
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatЕвгенийВ,

Да, кстати, Concat еще оказывается по скорости быстрее на 10-20% чем StringBuilder. Причем, даже если у билдера загодя задавать капасити, то ситуация не меняется. Ну что же, будем теперь знать и использовать
Который принимает IEnumerable<string> values использует внутри StringBuilder, остальные вычисляют длину, аллоцируют память и копируют туда данные из переданных строк.
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39815238
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Нет, Concat не использует внутри StringBuilder - я специально смотрел. Но Concat-у надо зараннее прочитать всю коллекцию, чтобы узнать суммарную длину строк, только после этого он начинает их конкатчить. Причем он использует unsafe pointers с инструкцией fixed, что блокирует GC на время его работы. Т.ч., в принципе, в некоторых сценариях моет быть лучше Concat, а в некоторых все-таки StringBuilder.
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39815245
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

fixed не блокирует GC, данная инструкция указывает, указывает на то. чтоб данный объект не перемещался в памяти в момент дефрагментации. Если объект не супер большой и расположен в Heap, GC может упаковать память (дефрагментировать) и переместить объекты 2 поколения в начало, а 0 в конец кучи (это в 2 словах). fixed объект этому не подвержен
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39815249
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatЕвгенийВ,

Нет, Concat не использует внутри StringBuilder - я специально смотрел. Но Concat-у надо зараннее прочитать всю коллекцию, чтобы узнать суммарную длину строк, только после этого он начинает их конкатчить. Причем он использует unsafe pointers с инструкцией fixed, что блокирует GC на время его работы. Т.ч., в принципе, в некоторых сценариях моет быть лучше Concat, а в некоторых все-таки StringBuilder.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
      [ComVisible(false)]
        public static String Concat<T>(IEnumerable<T> values) {
            if (values == null)
                throw new ArgumentNullException("values");
            Contract.Ensures(Contract.Result<String>() != null);
            Contract.EndContractBlock();

            StringBuilder result = StringBuilderCache.Acquire();
            using(IEnumerator<T> en = values.GetEnumerator()) {
                while (en.MoveNext()) {
                    if (en.Current != null) {
                        // handle the case that the enumeration has null entries
                        // and the case where their ToString() override is broken
                        string value = en.Current.ToString();
                        if (value != null)
                            result.Append(value);
                    }
                }            
            }
            return StringBuilderCache.GetStringAndRelease(result);
        }



https://github.com/microsoft/referencesource/blob/master/mscorlib/system/string.cs
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39815251
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 [ComVisible(false)]
        public static String Concat(IEnumerable<String> values) {
            if (values == null)
                throw new ArgumentNullException("values");
            Contract.Ensures(Contract.Result<String>() != null);
            Contract.EndContractBlock();

            StringBuilder result = StringBuilderCache.Acquire();
            using(IEnumerator<String> en = values.GetEnumerator()) {
                while (en.MoveNext()) {
                    if (en.Current != null) {
                        result.Append(en.Current);
                    }
                }            
            }
            return StringBuilderCache.GetStringAndRelease(result);            
        }
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39815252
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

Ну, в принципе, я понимаю, что он может как-то уплотнить остальные объекты в обход fixed, но все равно heap ptr ниже верхней границы fixed объекта уменьшить не получится-то.
...
Рейтинг: 0 / 0
Как убрать все символы ; в конце строки?
    #39815256
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Да, я, похоже, прошляпил - не тот Concat просто посмотрел. Они для IEnumerable и для массива отличаются по реализации.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как убрать все символы ; в конце строки?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]