将数字格式化为罗马数字?

dpp*_*dpp 1 vb.net number-formatting

是否可以使用 Format 函数以罗马数字显示整数?

For Counter As Integer = 1 To 10
   Literal1.Text &= Format(Counter, "???")
Next
Run Code Online (Sandbox Code Playgroud)

Dav*_*ave 5

这是我发现的 http://www.source-code.biz/snippets/vbasic/7.htm找到的

(最初由Christian d'Heureuse先生撰写在 VB 中)

我将其转换为 VB.net:

   Private Function FormatRoman(ByVal n As Integer) As String
      If n = 0 Then FormatRoman = "0" : Exit Function
      ' there is no Roman symbol for 0, but we don't want to return an empty string
      Const r = "IVXLCDM" ' Roman symbols
      Dim i As Integer = Math.Abs(n)
      Dim s As String = ""

      For p As Integer = 1 To 5 Step 2
         Dim d As Integer = i Mod 10
         i = i \ 10
         Select Case d ' format a decimal digit
            Case 0 To 3 : s = s.PadLeft(d + Len(s), Mid(r, p, 1))
            Case 4 : s = Mid(r, p, 2) & s
            Case 5 To 8 : s = Mid(r, p + 1, 1) & s.PadLeft(d - 5 + Len(s), Mid(r, p, 1))
            Case 9 : s = Mid(r, p, 1) & Mid(r, p + 2, 1) & s
         End Select
      Next

      s = s.PadLeft(i + Len(s), "M") ' format thousands
      If n < 0 Then s = "-" & s ' insert sign if negative (non-standard)
      FormatRoman = s
   End Function
Run Code Online (Sandbox Code Playgroud)

我希望这会帮助其他人。

干杯 - 戴夫。