我正在将一个古老的VB6程序转换为C#(.Net 4.0),并且在一个例程中它执行了大量的字符串操作和生成.它使用的大多数原生VB6代码在C#字符串类中都有类似物,例如Trim().但我似乎无法找到Space(n)的替代品,它显然会生成一个字符串n个空格.
通过MSDN文档,似乎有一个VB.Net 的Space()方法,但我无法在VB.Net上下文之外找到它.为什么是这样?我以为所有.Net语言共享相同的CLR.
C#或.Net是否有一个我可以在C#中使用的通用Space()方法,我只是在某个地方?
NB我知道编写单行来生成n空格是一个流行的测验问题和程序员对某些编程语言的酒吧游戏,但我不是在寻找建议.如果在C#/ .Net中没有本地方法可以做到这一点,那么写一个简单的方法就很容易了; 我只是不想重新发明轮子.
Nat*_*nSr 57
使用此构造函数System.String:
new String(' ', 10);
http://msdn.microsoft.com/en-us/library/xsa4321w(v=vs.110).aspx
这里有一个你可以使用的简洁扩展方法(尽管使用String构造函数并保存额外的方法调用可能更好):
public static class CharExtensions
{
public static string Repeat(this char c, int count)
{
return new String(c, count);
}
}
...
string spaces = ' '.Repeat(10);
Run Code Online (Sandbox Code Playgroud)
Typ*_*eIA 10
本string类有一个构造函数,让你由一串ñ指定字符的副本:
// 32 spaces
string str = new string(' ', 32);
Run Code Online (Sandbox Code Playgroud)
.NET在Microsoft.VisualBasic命名空间中有一组兼容性函数,用于将旧的VB代码转换为.NET,其中一个是重新创建Space函数.
var myString = Microsoft.VisualBasic.Strings.Space(10); //Or just Strings.Space(10); if you do "using Microsoft.VisualBasic;" at the top of your file.
Run Code Online (Sandbox Code Playgroud)
但是我建议使用new String(' ', 10)其他答案提到的方法.
通常,当有人在 VB 中使用空格函数时,这是因为他们要连接字符串并且需要在右侧添加一个或多个空格。
Dim strConcatVB6 As String
strConcatVB6 = "Someone" & Space(1) & "Help" & Space(1) & "Out!"
Dim strConcatNet As String = String.Concat("Someone", Space(1), "Help", Space(1), "Out!")
Debug.WriteLine(strConcatVB6)
Debug.WriteLine(strConcatNet)
Run Code Online (Sandbox Code Playgroud)
移植代码时欺骗 Space 函数的一个简单方法显然是创建一个在 C# 中模仿它的函数。
Func<int, string> Space = (n) => ("".PadRight(n));
string strConcat = string.Concat("Somebody", Space(1), "Help", Space(1), "Out!");
MessageBox.Show(strConcat);
Run Code Online (Sandbox Code Playgroud)
我希望 VB 团队能够弃用旧版本语言规范中旧的丑陋(曾经很漂亮)的字符串函数,这些函数已在 .NET 中进行了简化,并且可以在 Space 等很酷的语言中工作。我对原始问题发布者表示歉意,因为您正在寻找 C# 中用于 VB Space 函数的本机函数。
我喜欢 GregRos 的答案,但对其进行了一些修改以使其更具声明性,而不是过于依赖引号,否则您可能会不小心滑入文本。
var myString = string.Empty.PadLeft(n);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59491 次 |
| 最近记录: |