1

我可能遗漏了一些明显的东西,但我似乎无法在 ac#Code-Behind 页面中使用 LSET 和 RSET 字符串函数。

我的代码如下:

    string ts = LSet(someString, 16);

Visual Web 开发人员无法识别 LSet。

一位同事在相同的上下文中做相同类型的工作,但他使用 VB 进行代码隐藏。我让他试试

他的代码如下:

    Dim ts as String 
    ts = LSet(someString, 16)

这完美地工作。

所以,我试图添加

    using Microsoft.VisualBasic;

在我的 C# 页面中。LSet 仍然无法识别。

我做错什么了 ?LSet 和 RSet 在 c# 中不可用吗?如果是这样,为什么?我知道 PadLeft 和 PadRight 很相似,但是如果字符串大于指定长度,它们不会剪切字符串,所以我仍然想使用 LSet 和 RSet。

4

4 回答 4

1
 Dim ts as String 
 ts = LSet(someString, 16)

可以使用Strings.LSet来完成

string ts="xxxx....";
var result = Strings.LSet(ts, 16)

可以通过使用String.Substring来达到同样的效果

于 2013-07-16T13:05:26.510 回答
0

在您的项目References中,您需要添加对Microsoft.VisualBasic程序集的引用。

using Microsoft.VisualBasic;

class Program
{
    static void Main(string[] args)
    {
        var input = "123";
        var length = 6;
        var lSet = Strings.LSet(input, length);
        var rSet = Strings.RSet(input, length);

        // you could also have the same functionality 
        // without having to use LSet and RSet
        var padR = input.Substring(0, 
                Math.Min(input.Length, length))
            .PadRight(length, ' ');

        var padL = input.Substring(0, 
                Math.Min(input.Length, length))
            .PadLeft(length, ' ');

        Console.WriteLine(lSet == padR);
        Console.WriteLine(rSet == padL);
    }
}
于 2013-07-16T13:00:06.810 回答
0

这是实现

public static string LSet(string Source, int Length)
{
    if (Length == 0)
    {
        return "";
    }
    if (Source == null)
    {
        return new string(' ', Length);
    }
    if (Length > Source.Length)
    {
        return Source.PadRight(Length);
    }
    return Source.Substring(0, Length);
}
public static string RSet(string Source, int Length)
{
    if (Length == 0)
    {
        return "";
    }
    if (Source == null)
    {
        return new string(' ', Length);
    }
    if (Length > Source.Length)
    {
        return Source.PadLeft(Length);
    }
    return Source.Substring(0, Length);
}

或者只是将 Microsoft.VisualBasic 添加到引用并使用该命名空间,您会发现名为 Strings 的类它具有那些静态成员实际上所有的 vb 字符串方法

于 2013-07-16T13:06:58.167 回答
0

如果你想要填充或截断语义;

string ts = someString.PadRight(len).Substring(0, len);
于 2013-07-16T13:11:46.917 回答