4

有一个String.Format函数在文档中被称为FormatVB6 的模拟函数。还有Format来自VisualBasic命名空间的功能是为了兼容性而提供的,并且基本上具有与String.Format.

事实上,这两种格式的日期和数字。

但是 VB6 的函数也可以格式化字符串:

? format$("hi there", ">")
HI THERE
? format$("hI tHeRe", "<")
hi there
? format$("hi there", ">!@@@... not @@@@@")
HI ... not THERE

String.Format就我而言,无法做到这一点,新的Format. 我在兼容性文档中也找不到任何提及FormatVB6 功能的某些部分丢失的信息,似乎该功能已被“默默地”弃用。

框架中有什么可以做这种格式的吗?

4

5 回答 5

5

另一个需要考虑的解决方案是使用 Microsoft.VisualBasic.Compatibility.VB6 命名空间,其中包含几个与 Visual Basic 6 向后兼容的类和方法。它主要用于升级工具,但它会为您省去必须购买迁移工具或自己编写代码。

MSDN 文档:Support.Format 方法 (Microsoft.VisualBasic.Compatibility.VB6)

参数不会改变,它基本上支持相同的功能,至少给定您的示例:

Imports Microsoft.VisualBasic.Compatibility.VB6

Console.WriteLine("HI THERE ")
Console.WriteLine(Support.Format("hi there", ">"))

Console.WriteLine("hi there ")
Console.WriteLine(Support.Format("hI tHeRe", "<"))

Console.WriteLine("HI ... not THERE")
Console.WriteLine(Support.Format("hi there", ">!@@@... not @@@@@"))
于 2010-02-02T21:15:47.417 回答
2

这个 MSDN 页面似乎确认支持已从 VB6 下降到 VB.NET。您必须自己实现它,在互联网上四处寻找一些 3rd 方代码或(最好)重写代码以使用String.Format和/或 ToUpper/ ToLower

你的最后一个例子是这样的:

myString = String.Format("{0,-3}... not {1,-5}", "hi".ToUpper(), "there".ToUpper())

您可以实现自己的IFormatProvider以通过格式字符串支持大写和小写,但我不确定这样做是否值得。

于 2010-01-22T09:58:02.677 回答
1

命名空间中的Format函数VisualBasic应该尽可能接近FormatVB 6 中的函数,因此您可能会在那里寻找那种字符串格式。

String.Format方法是独立于任何语言特定继承而开发的。它从 VB 6(或其他语言)继承的任何特性都基于它们的实用性,而不是向后兼容。

于 2010-01-22T09:39:56.900 回答
1

VBMigration.com 有一个将 VB6 迁移到 VB.Net 的商业解决方案。他们的网站记录了VB6和 VB.Net 版本之间的各种行为Format差异,包括这个问题中的差异。

如果您购买他们的 VB 迁移合作伙伴工具,您的 VB6Format代码将被迁移以使用模拟 VB6行为的运行时库函数。我从未使用过他们的工具,但听起来很棒。如果您有很多代码,我认为它可以节省大量资金。Format6Format

于 2010-01-22T12:27:41.590 回答
-1

可以使用

Dim value As Double

value = 1.2
TextBox1.Text = (value.ToString("0.00",System.Globalization.CultureInfo.InvariantCulture))

更多信息 http://msdn.microsoft.com/en-us/library/0c899ak8.aspx#Y3200

于 2011-04-05T13:31:26.587 回答