使用HTML标记在字符串中格式化美元金额

时间:2014-02-07 16:56:44

标签: vb.net string-formatting

我需要在VB.NET中的包含字符串中为字符串添加格式。

例如,整个包含的字符串可能是“您今天有资格获得10.00美元的折扣。”我只想加价(< b>< / b>)价格(在这种情况下为10.00美元,但也可能是5.00美元)。包含的字符串存储在数据库中。

所以现在我有类似下面的内容来获取字符串:

'CHECK IF ODD OR EVEN ORDER ID NUMBER CODE HERE, IF EVEN NUMBER THE DISPLAY TEXT SHOULD DISPLAY BOLD PRICE
Function GetText()
    Dim strText As String = ""
    strText = dataset1.Tables(0).Rows(0)("displayText").ToString()
    return strText
End Function

2 个答案:

答案 0 :(得分:1)

如果您知道价格中包含字符串中唯一的美元符号,则可以使用String.SplitString.Join,任何更复杂的内容都可能需要正则表达式。

像这样。

Module Module1

    Sub Main()
        Dim x As Integer
        Dim myString As String = "You're eligible to receive a discount of $10.00 today."

        Dim temp As String() = myString.Split(" "c)
        For x = 0 To temp.Length - 1
            If temp(x).Contains("$") Then
                temp(x) = "<b>" & temp(x) & "</b>"
            End If
        Next
        myString = String.Join(" ", temp)
        Console.WriteLine(myString)
        Console.ReadLine()
    End Sub

End Module

修改了GetText函数

Function GetText() As String
    Dim strText As String = dataset1.Tables(0).Rows(0)("displayText").ToString()
    Dim temp As String() = strText.Split(" "c)
    For x = 0 To temp.Length - 1
        If temp(x).Contains("$") Then
            temp(x) = "<b>" & temp(x) & "</b>"
        End If
    Next
    Return strText = String.Join(" ", temp)
End Function

答案 1 :(得分:1)

使用Regex

Dim input As String = "You're eligible to receive a discount of $10.00 today."
Dim re As New Regex(
  "(?!\(.*[^)]$|[^(].*\)$)\(?\$?(0|[1-9]\d{0,2}(,?\d{3})?)(\.\d\d?)?\)?")
Dim output As String = re.Replace(input, AddressOf MakeBold)

假设在某处宣布:

Function MakeBold(m As Match) As String
  Return String.Format("<b>{0}</b>", m.ToString())
End Function

因为它正在使用正则表达式,所以很乐意接受多个处理金额,即字符串如下:

  

您今天有资格获得10.00美元的折扣和明天的额外折扣$ 5.00。

用这个替换它:

  

您今天有资格获得 $ 10.00 的折扣以及明天 $ 5.00 的额外折扣。

(注意:StackOverflow的HTML解析器正确解释了<b></b>个标签)

您可能需要调整正则表达式以满足您的需要。正如目前所写,它应匹配任何看起来像美元金额的东西。

参考文献: