Поиск подстановочного знака replace() для чисел

Я не эксперт в С#, я занимаюсь этим всего несколько месяцев.

У меня есть токен @Html.Raw(Model.Prices.SitePrice.Text), который отображает цену товара (9,99 долларов США)

Мне нужно было убрать знак $ с токена, поэтому я поставил @Html.Raw(Model.Prices.SitePrice.Text.Replace("$", ""))

Все это работает нормально. Проблема в том, что когда я применяю к этому продукту специальное продвижение / продвижение, он меняет отображаемый токен:

<strike>$9.99</strike> $7.99 он должен отображаться 7.99 после работы.

Я хочу удалить <stike>$##.##</strike> с помощью подстановочного знака, чтобы иметь дело с любым числом между ударами.

Как лучше всего написать .replace() для этого текста? (должен быть встроенным для данных схемы Google)

Я пробовал:

@Html.Raw(Model.Prices.SitePrice.Text.Replace("$", "").Replace("<strike>[\r\n]+</strike> ", ""))

@Html.Raw(Model.Prices.SitePrice.Text.Replace("$", "").Replace("<strike>(.*)</strike> ", ""))

7 разных значений?

<strike>$9.99</strike> $7.99 должно отображаться 7.99

<strike>$10.99</strike> $8.99 должно отображаться 8.99

<strike>$199.00</strike> $188.00 должно отображаться 188.00

<strike>$20.00</strike> $18.50 должно отображаться 18.50

<strike>$4.20</strike> $2.20 должно отображаться 2.20

<strike>$12345.00</strike> $12225.00 должно отображаться 12225.00

Что я лично сделал бы, так это Reverse строку, затем TakeWhile, пока символ не является $, а затем Reverse снова (или используйте LastIndexOf и Substring, чтобы избежать необходимости в Reverses). Это в основном получит все, начиная с конца строки после и заканчивая последним знаком $.

mjwills 29.05.2019 02:57

Конечно, у вас должны быть «Цена» и «Цена со скидкой» (или что-то в этом роде) в качестве отдельных полей в вашей базе данных (как фактическая валюта/десятичный тип), а не хранить их в виде текста? Возможно, есть какая-то причина, по которой вы не можете, но мне кажется, что это был бы лучший способ сделать что-то.

DiplomacyNotWar 29.05.2019 02:59

к сожалению, я использую что-то под названием Hotcakes ecommerce, и это очень хитроумно. у него есть только одна ссылка как на цену, так и на цену со скидкой. очень надоедливый.

Just Browsing 29.05.2019 03:02

это просто невозможно с заменой? и просто пытаясь сделать то, что вы упомянули, мне просто нужно понять, как это написать: P

Just Browsing 29.05.2019 03:22

Конечно, смотрите ответ.

Alsein 29.05.2019 04:01
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
5
142
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
@Html.Raw(Regex.Replace(Model.Prices.SitePrice.Text, @"<strike>[\s\S]*</strike>", "").Trim().TrimStart('$'))

Спасибо, приятель, ценю помощь! Эта ошибка из-за The name 'Regex' does not exist in the current context

Just Browsing 29.05.2019 04:07

Должен быть в состоянии работать с тем, что вы мне дали. Спасибо

Just Browsing 29.05.2019 04:08

префикс Regex с System.Text.RegularExpressions. будет работать.

Alsein 29.05.2019 04:09

Большое спасибо! Литтлери просто понадобилось это для кода схемы Google. работает как шарм и многому научился. Куда отправить ящик пива?

Just Browsing 29.05.2019 04:12

Ага, смешные слова были уже ящик пива, правда его убрали :-<

Alsein 29.05.2019 04:15

Да, я как раз искал этот комментарий. Я добавлю это обратно в вопрос для вас!

Just Browsing 29.05.2019 04:24

Один вариант для рассмотрения:

@Html.Raw(new string(Model.Prices.SitePrice.Text.Reverse().TakeWhile(z => z != '$').Reverse().ToArray()))

Это займет текст в конце SitePrice до (и не включая) $.

Reverse означает, что он переворачивает строку. TakeWhile доводит текст до $. Reverse переворачивает его обратно. new string преобразует массив символов обратно в строку.

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

Just Browsing 29.05.2019 04:23

Другие вопросы по теме