代码之家  ›  专栏  ›  技术社区  ›  GSerg

VB6格式功能:模拟输入.NET

  •  4
  • GSerg  · 技术社区  · 15 年前

    String.Format 在文档中称为 Format 来自vb6的函数。还有 格式 函数从 VisualBasic 为兼容性而提供的命名空间,其功能与 字符串格式 .

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

    但vb6的函数也能够格式化字符串:

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

    字符串格式 据我所知,不能做到这一点,新的也不能 格式 .在兼容性方面我也找不到任何提及 格式 有关vb6功能某些部分丢失的文档,似乎该功能已被“无声地”弃用。

    框架中有什么可以进行这种格式设置的吗?

    5 回复  |  直到 12 年前
        1
  •  4
  •   Migration Specialist    15 年前

    要查看的另一个解决方案是使用Microsoft.VisualBasic.Compatibility.vb6命名空间,该命名空间包含几个与VisualBasic6向后兼容的类和方法。它主要用于升级工具,但它将为您节省购买迁移工具或自己编写代码的麻烦。

    MSDN文档: Support.Format Method (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 @@@@@"))
    
        2
  •  2
  •   Thorarin    15 年前

    This MSDN page 似乎证实了支持从vb6下降到vb.net。你必须自己实现它,在因特网上四处寻找一些第三方代码,或者(最好)重写要使用的代码。 String.Format 和/或 ToUpper / ToLower .

    最后一个例子是:

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

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

        3
  •  1
  •   Guffa    15 年前

    这是 Format 函数来自 VisualBasic 名称空间应该尽可能接近 格式 函数来自于vb 6,所以您可能会在这里寻找这种字符串格式。

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

        4
  •  1
  •   MarkJ    15 年前

    vbmigration.com有一个将vb6迁移到vb.net的商业解决方案。他们网站 documents various differences in behaviour 在VB6之间 Format 以及vb.net版本,包括本问题中的版本。

    如果你 buy their VB Migration Partner tool 你的VB6 格式 将迁移代码以使用 runtime library 功能 Format6 模拟vb6 格式 行为。我从来没有用过他们的工具,但听起来不错。如果你有很多代码,我认为它可以节省大量的钱。

        5
  •  0
  •   Bruno Vieira    12 年前

    可以使用

    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