C#/ .Net中是否有"Space(n)"方法?

use*_*117 40 .net c#

我正在将一个古老的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)


Sco*_*ain 7

.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)其他答案提到的方法.


Gre*_*Ros 7

我一直用:

var myString = "".PadLeft(n);
Run Code Online (Sandbox Code Playgroud)


Sco*_*Net 5

通常,当有人在 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 函数的本机函数。


Pli*_*kin 5

我喜欢 GregRos 的答案,但对其进行了一些修改以使其更具声明性,而不是过于依赖引号,否则您可能会不小心滑入文本。

var myString = string.Empty.PadLeft(n);
Run Code Online (Sandbox Code Playgroud)