我可能遗漏了一些明显的东西,但我似乎无法在c#Code-Behind页面中使用LSET和RSET字符串函数。
我的代码如下:
string ts = LSet(someString, 16);
Visual Web开发人员无法识别LSet。
同事在相同的上下文中执行相同类型的工作,除了他使用VB进行Code-Behind。我请他试试
他的代码如下:
Dim ts as String
ts = LSet(someString, 16)
这很有效。
所以,我试着添加
using Microsoft.VisualBasic;
在我的c#页面中。 LSet仍未被识别。
我做错了什么? LSet和RSet在c#中不可用吗?如果是这样,为什么? 我知道PadLeft和PadRight是相似的,但是如果字符串大于指定的长度,它们不会剪切字符串,所以我仍然想使用LSet和RSet。
答案 0 :(得分:1)
Dim ts as String
ts = LSet(someString, 16)
可以使用Strings.LSet
完成string ts="xxxx....";
var result = Strings.LSet(ts, 16)
可以达到同样的效果
答案 1 :(得分:0)
在项目参考中,您需要添加对 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);
}
}
答案 2 :(得分: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字符串方法
答案 3 :(得分:0)
如果你想要pad或truncate语义;
string ts = someString.PadRight(len).Substring(0, len);