如何给 10 美元和 50.58 美元下划线

本文关键字:美元 下划线 | 更新日期: 2023-09-27 18:33:56

所有客户在 ccc.com's Home Decor, Home 中可享受 10 美元的折扣 50.58 美元 电器和户外商店!有效期至 2012 年 5 月 31 日"

我从数据库获得上述类型的字符串,该字符串可能包含也可能不包含 $。如果它包含 $,则应在 $ 后面的数字加下划线。字符串是完全动态的。它也可能不包含 $

如何给 10 美元和 50.58 美元下划线

尝试正则表达式:

Regex.Replace(str, @"(?<='$)'d+('.'d+)?", "<u>$0</u>");

一些示例输出:

"4.5"     -> "4.5"         (untouched)
"4"       -> "4"           (untouched)
"$4.5"    -> "$<u>4.5</u>"
"$4"      -> "$<u>4</u>"

虽然,由于u已被弃用,您可能应该考虑带有类的<span>,或者带有 text-decoration: underline 指令的内联样式:

Regex.Replace(str, @"(?<='$)'d+('.'d+)?", 
  "<span style=""text-decoration: underline"">$0</span>");

这将取决于您要将此文本放入的封闭元素是什么: 如果它也是一个span,那么你不能嵌套它们,所以你必须关闭第一个(只需在替换字符串的开头粘贴"</span>"(第三个参数)和"<span>"在末尾)

以上面使用跨度的例子为例...可能比正则表达式更容易阅读的东西只是 indexOf 方法

        string s = "$10";
        string t =  (s.IndexOf('$') > 0) ? "<span style='"text-decoration: underline'">#</span>".Replace("#",s):"<span>{0}</span>".Replace("#",s);