在c#-aspx应用程序中使用LSET或RSET

在c#-aspx应用程序中使用LSET或RSET,c#,string,C#,String,我可能遗漏了一些明显的东西,但我似乎无法在c代码隐藏页面中使用LSET和RSET字符串函数 我的代码如下: string ts = LSet(someString, 16); Visual Web Developer不识别LSet 一个同事在相同的环境中做相同类型的工作,除了他使用VB进行代码隐藏。我请他试一试 他的代码如下: Dim ts as String ts = LSet(someString, 16) 这很好用 因此,我试图添加 using Mic

我可能遗漏了一些明显的东西,但我似乎无法在c代码隐藏页面中使用LSET和RSET字符串函数

我的代码如下:

    string ts = LSet(someString, 16);
Visual Web Developer不识别LSet

一个同事在相同的环境中做相同类型的工作,除了他使用VB进行代码隐藏。我请他试一试

他的代码如下:

    Dim ts as String 
    ts = LSet(someString, 16)
这很好用

因此,我试图添加

    using Microsoft.VisualBasic;
在我的网页上。LSet仍然未被识别

我做错了什么?LSet和RSet在c#中不可用吗?若然,原因为何? 我知道PadLeft和PadRight是相似的,但如果字符串大于指定长度,它们不会剪切字符串,因此我仍然希望使用LSet和RSet。

在项目引用中,您需要添加对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);
    }
}
在项目引用中,需要添加对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);
    }
}
可以使用

可以通过使用

可以使用


使用

可以实现同样的效果这是实现

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字符串方法

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字符串方法

如果您需要pad或truncate语义

string ts = someString.PadRight(len).Substring(0, len);

如果需要填充或截断语义

string ts = someString.PadRight(len).Substring(0, len);

它们是可用的,但您需要预先设置它们所在的模块,在本例中为
字符串。换句话说就是这样
Strings.LSet(someString,16)
。虽然您可能应该使用
子字符串
(C#方法)。好的,这很明显,我错过了:)。成功了
LSet(someString,10)
someString.PadRight(10).Substring(0,10)
更容易编写,但最重要的是,我想了解我做错了什么。非常感谢您的快速回答。快速提示:它知道这类事情(我不知道它在
Strings
模块中,所以我刚刚输入了
LSet(someString,16)
,它将其转换为
Strings.LSet(someString,16)
对我来说。对于像这样的小例子,你只需要知道某些东西在哪个模块中,像这样的工具是非常宝贵的。对于更复杂的代码,你可能需要手动翻译。另外,如果
LSet
设置字符串的长度(我不是VB高手),你可以简单地执行
str.PadRight(10-str.length)
(假设你知道它太长了),或者
str.Length>=10:str.Substring(10):str.PadRight(10-str.Length)
。至少对我来说,这可以理解代码的作用^^^它们是可用的,但是你需要预先设置它们所在的模块,在本例中是
Strings
。换句话说;
Strings.LSet(someString,16)
。虽然您可能应该使用
子字符串
(C#方法)。好的,这很明显,我错过了:)。它起作用了。
LSet(someString,10)
someString.PadRight(10)子字符串(0,10)更容易编写
但最重要的是,我想知道我做错了什么。非常感谢你的快速回答。快速提示:它知道这类事情(我不知道它在
字符串
模块中,所以我只输入了
LSet(someString,16)
,它将其转换为
Strings.LSet(someString,16)
对我来说。对于像这样的小例子,你只需要知道某些东西在哪个模块中,像这样的工具是非常宝贵的。对于更复杂的代码,你可能需要手动翻译。另外,如果
LSet
设置字符串的长度(我不是VB高手),你可以简单地执行
str.PadRight(10-str.length)
(假设你知道它太长了),或者
str.Length>=10:str.Substring(10):str.PadRight(10-str.Length)
。至少对我来说,这会让代码的功能变得易懂^^