我需要在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
答案 0 :(得分:1)
如果您知道价格中包含字符串中唯一的美元符号,则可以使用String.Split
和String.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>
个标签)
您可能需要调整正则表达式以满足您的需要。正如目前所写,它应匹配任何看起来像美元金额的东西。
参考文献: