Пробел для обрезки с середины строки

Да, Skia / SkiaSharp позволит вам трансформировать цвета. Помимо использования матричного преобразования, вы можете использовать таблицы переназначения цветов.

Создайте SKColorFilter, используя SKColorFilter.CreateTable(alphaRemapTable, redRemapTable, blueRemapTable, greeenRemapTable)

Эти таблицы представляют собой байтовые массивы длиной 256 элементов. Преобразование работает так, что компонент начального цвета используется в качестве индекса для поиска значения, к которому он должен быть переназначен, например. 10 red преобразуется в значение в красном массиве с индексом 10.

Передача нулевого значения в любой из аргументов оставит этот компонент цвета без изменений.

Дополнительная информация: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/graphics/skiasharp/effects/color-filters

11
задан Chris Karcher 19 October 2008 в 19:49
поделиться

6 ответов

Замените двумя или больше пробелами одно пространство:

s/  +/ /g

Править: для любого пробела (не только располагает с интервалами) можно использовать \s, если Вы пользуетесь perl-совместимой regex библиотекой и изогнутым синтаксисом фигурной скобки для количества случаев, например.

s/\s\s+/ /g

или

s/\s{2,}/ /g

Редактирование № 2: забыл/g глобальный суффикс, JL спасибо

15
ответ дан 3 December 2019 в 02:53
поделиться
str = Regex.Replace(str, " +( |$)", "$1");
9
ответ дан 3 December 2019 в 02:53
поделиться

Варианты Perl: 1) $ s/\s+//; 2) s/\s +//g;

2
ответ дан 3 December 2019 в 02:53
поделиться

Существует ли конкретная причина, которую Вы просите регулярное выражение? Они не могут быть лучшим инструментом для этой задачи.

Замена как

 s/[ \t]+/ /g

должен сжать внутренний пробел (на самом деле, он сожмет ведущий и запаздывающий пробел также, но он не кажется, что это - проблема.), и

s/[ \t]+$/$/

будет заботиться о запаздывающем пробеле. [Я использую sedсинтаксис выхода здесь. Вы не сказали, какую разновидность Вы предпочитаете.]


Сразу же рука я не вижу способ сделать это в отдельном выражении.

1
ответ дан 3 December 2019 в 02:53
поделиться

Поскольку сжатие пробелов и обрезка пробелов по краям - концептуально разные операции, мне нравится делать это в два этапа:

re.replace("s/\s+/ /g", str.strip())

Не самый эффективный, но вполне читаемый.

1
ответ дан 3 December 2019 в 02:53
поделиться

/ (^ [\ s \ t] + | [\ s \ t] + ([\ s \ t] | $)) / g заменить на $ 2 (начало | середина / конец)

0
ответ дан 3 December 2019 в 02:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: