powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Regex - как парсить текст с спецсимволами
8 сообщений из 8, страница 1 из 1
Regex - как парсить текст с спецсимволами
    #39850728
Фотография Strassebahn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет

Нужно распарсить строку полученную из массива байт через

Код: c#
1.
System.Text.Encoding.UTF8.GetString(bytes)


нужно разрезать строку на части (Regex.Split)
Разделителем является последовательность двух байт: 8 и 21
точнее символы, соответствующие байтам 8 и 21

я конечно попробовал вставить в Regex эти 2 символа - но Visual Studio ругается,
при такой записи:
Код: c#
1.
 reg_splitter = new Regex(@"", RegexOptions.Compiled)



Не подскажете, как правильно написать Regex?

P S Конечно можно изменить входящий массив байт, но интересует как правильно написать Regex

Спасибо
...
Рейтинг: 0 / 0
Regex - как парсить текст с спецсимволами
    #39850729
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно попробовать  и 

Но в принципе это кривой подход - говорить о строке UTF8 и употреблять понятие "байт"
...
Рейтинг: 0 / 0
Regex - как парсить текст с спецсимволами
    #39850853
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StrassebahnНе подскажете, как правильно написать Regex?

Регулярные выражения работают только со строками. Они придуманы для работы только со строками.
Почему вы не хотите для такой простой задачи, как сплит, написать простейший алгоритм?
...
Рейтинг: 0 / 0
Regex - как парсить текст с спецсимволами
    #39850868
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Strassebahn,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
        public static IEnumerable<byte[]> Split(byte[] array, byte[] separator)
        {
            if (array == null) throw new ArgumentNullException(nameof(array));
            if (separator == null) throw new ArgumentNullException(nameof(separator));
            if (separator.Length == 0)
                throw new ArgumentException("Value cannot be an empty collection.", nameof(separator));

            var lastIndex = 0;

            for (int i = 0, j = 0; i < array.Length; ++i)
            {
                if (array[i] == separator[j])
                {
                    if (++j < separator.Length) continue;
                    yield return SubArray((i - separator.Length + 1) - lastIndex);
                    lastIndex = i + 1;
                }
                j = 0;
            }

            yield return SubArray(array.Length - lastIndex);

            byte[] SubArray(int length)
            {
                if (length == 0) return Array.Empty<byte>();
                var span = new byte[length];
                Array.Copy(array, lastIndex, span, 0, length);
                return span;
            }
        }



Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Split(separator: [8, 21], array: [])
[[]]
Split(separator: [8, 21], array: [1])
[[1]]
Split(separator: [8, 21], array: [1, 2, 3])
[[1, 2, 3]]
Split(separator: [8, 21], array: [8])
[[8]]
Split(separator: [8, 21], array: [21])
[[21]]
Split(separator: [8, 21], array: [8, 21])
[[], []]
Split(separator: [8, 21], array: [8, 21, 8, 21, 8, 21])
[[], [], [], []]
Split(separator: [8, 21], array: [1, 8, 21])
[[1], []]
Split(separator: [8, 21], array: [8, 21, 2])
[[], [2]]
Split(separator: [8, 21], array: [1, 8, 21, 2, 8, 21, 3])
[[1], [2], [3]]
Split(separator: [8, 21], array: [1, 2, 3, 8, 21, 2, 3, 4, 8, 21, 3, 4, 5])
[[1, 2, 3], [2, 3, 4], [3, 4, 5]]



Лучше конечно ArraySegment использовать, но фиг знает чё у вас там за фреймворк.
...
Рейтинг: 0 / 0
Regex - как парсить текст с спецсимволами
    #39850969
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
hVostt,

Зачем столько букв?

Код: c#
1.
stringValue.Split(new char[] { '','' });
...
Рейтинг: 0 / 0
Regex - как парсить текст с спецсимволами
    #39851003
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttStrassebahnНе подскажете, как правильно написать Regex?

Регулярные выражения работают только со строками. Они придуманы для работы только со строками.
Почему вы не хотите для такой простой задачи, как сплит, написать простейший алгоритм?
Люди вон с их помощью еще числа на простоту проверяют :)
...
Рейтинг: 0 / 0
Regex - как парсить текст с спецсимволами
    #39851909
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2hVostt,

Зачем столько букв?

Код: c#
1.
stringValue.Split(new char[] { '','' });



Столько букв для примера.

Не нужно со байтами в строках работать, даже если что-то там получается.
...
Рейтинг: 0 / 0
Regex - как парсить текст с спецсимволами
    #39851910
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВЛюди вон с их помощью еще числа на простоту проверяют :)

Ну это ж ненормальное пр-ие )
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Regex - как парсить текст с спецсимволами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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