#java #python #string #algorithm #substring
#java #python #строка #алгоритм #подстрока
Вопрос:
Предположим, у меня есть огромная строка в следующем формате —
"blahblahblahrgb(123, 214, 255)blahblahrgb(99, 0, 235)aefubaeofbiuaebfaef"
И я хочу заменить каждый экземпляр «rgb (x,x,x)» на «rgb (255,255,255)», при этом остальные символы в строке остались нетронутыми. Я не могу использовать метод замены строки по умолчанию, поскольку значения внутри rgb () могут различаться.
Таким образом, приведенная выше строка должна стать —
"blahblahblahrgb(255, 255, 255)blahblahrgb(255, 255, 255)aefubaeofbiuaebfaef"
Есть ли функция по умолчанию для этого? или любую эффективную логику, которую вы можете предложить?
Подойдут Python, Javascript, Java, Dart или любой другой язык.
Комментарии:
1. Это похоже на простую замену строки, можете ли вы показать, что вы пробовали до сих пор, и уточнить языковой тег, не спамите, добавляя несколько тегов.
2. Не рассылка спама. У меня не было никаких идей по этому поводу, поэтому я спросил здесь. Простая замена будет работать как mystring.replace(«rgb(123,123,123)»,»rgb (255,255,255)»). Но я не могу просто предоставить rgb (123,123,123), поскольку значения внутри rgb () могут отличаться.
3. Ваши вопросы звучат так, как будто требуется реализация РЕГУЛЯРНЫХ выражений или использование переменных position, stripping и temp
4. Этот сайт посвящен конкретике, однако, пожалуйста, укажите язык. Мы даже не знаем, будет ли запланированное вами использование работать с любым языком, который мы выбрали
5. Извините за это. У меня просто огромный код, который содержит разные цвета. Я просто искал способ заменить их все на rgb (255,255,255) сразу. Итак, я бы поместил весь код в строку и использовал какую-то технику замены. Вот почему я не заботился о языке, просто нужно его выполнить.
Ответ №1:
Ваша проблема — идеальный вариант использования для регулярных выражений. Поскольку вы запросили несколько языков, вот версия регулярных выражений на python.
import re
rex = re.compile("rgb(d{1,3}, d{1,3}, d{1,3})")
myString = "blahblahblahrgb(123, 214, 255)blahblahrgb(99, 0, 235)aefubaeofbiuaebfaef"
newString = rex.sub("rgb(255, 255, 255)", mystring)
print(myString)
>>> blahblahblahrgb(123, 214, 255)blahblahrgb(99, 0, 235)aefubaeofbiuaebfaef
print(newString)
>>> blahblahblahrgb(255, 255, 255)blahblahrgb(255, 255, 255)aefubaeofbiuaebfaef
Смотрите Regex101 для пошагового объяснения регулярного выражения.
Ответ №2:
Вот быстрое решение для регулярных выражений на Java
public String replaceAllRGBToWhite(String str) {
return str.replaceAll("rgb\(\d{1,3}, \d{1,3}, \d{1,3}\)", "rgb(255, 255, 255)");
}
Комментарии:
1. Спасибо. это именно то, что я искал