Подтвердить что ты не робот

Есть ли метод "Space (n)" в С#/. Net?

Я конвертирую старую программу VB6 в С# (.Net 4.0), и в одной рутине она выполняет много манипуляций и генерации строк. Большая часть исходного кода VB6, который он использует, имеет аналоги в строковом классе С#, например Trim(). Но я не могу найти замену Space (n), где он, по-видимому, генерирует строки n.

Просматривая документацию MSDN, похоже, для VB.Net существует метод Space(), но я не мог найти его упомянутым вне контекста VB.Net. Почему это? Я думал, что все языки .Net имеют одну и ту же CLR.

Есть ли у С# или .Net общий метод Space(), который я могу использовать в С#, который я просто где-то просматриваю?

N.B. Я знаю, что писать однострочные для генерации n-пространств - это популярная игра-вопрос для программистов и программистов для некоторых языков программирования, но я не ищу совета по этому поводу. Если в С#/нет обычного способа сделать это, Net достаточно просто написать простой метод; Я просто не хочу изобретать велосипед.

4b9b3361

Ответ 1

Используйте этот конструктор на 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);

Ответ 2

В классе string есть конструктор, который дает вам строку, состоящую из n копий указанного символа:

// 32 spaces
string str = new string(' ', 32);

Ответ 3

.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.

Однако я рекомендую использовать метод new String(' ', 10), о котором говорят другие ответы.

Ответ 4

Я всегда использую:

var myString = "".PadLeft(n);

Ответ 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)

Простой подход, чтобы обмануть функцию Space при переносе кода, - это, очевидно, создать функцию, которая имитирует ее на С#.

Func<int, string> Space = (n) => ("".PadRight(n));
string strConcat = string.Concat("Somebody", Space(1), "Help", Space(1), "Out!");
MessageBox.Show(strConcat);

Я желаю, чтобы команда VB осудила старые уродливые (привычные) строковые функции из более старых версий спецификации языка, которые были оптимизированы в .NET и работают в крутых, таких как Space. Приносим извинения за исходный вопрос, поскольку вы искали встроенную функцию в С# для функции VBs Space.

Ответ 6

Strings.Space существует в Microsoft.VisualBasic.dll. Это похоже на "встроенный" в VB.NET, а не на С# из-за двух причин:

  • В то время как для С# требуются операторы using, компилятор VB.NET позволяет настроить автоматический импорт (и Microsoft.VisualBasic включен в конфигурацию по умолчанию).

  • VB рассматривает члены модуля как глобальные функции (обратите внимание на [StandardModuleAttribute] на класс Strings).

Но да, вы могли бы добавить ссылку на Microsoft.VisualBasic.dll и написать:

using Microsoft.VisualBasic;

...

Strings.Space(n)

Конечно, причина, по которой эти методы существуют, заключалась главным образом в том, чтобы избежать переподготовки разработчиков VB6. Если вы потратите время на преобразование приложения, вам, вероятно, будет лучше переопределить его с помощью функций .NET, таких как строки формата.

Ответ 7

//Author: Puffgroovy
//Email: [email protected]
//
// Usage - CustomFunctions cf = new CustomFunctions();
// String strMessage = "Error Found - " + cf._DoubleQuote() + e.Message + cf._Space(23) + cf._DoubleQuote();
//


using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;


namespace DHHS_CustomFunctions
{
    class CustomFunctions
    {
        /// <summary>
        /// Same as the VB.NET Space Function
        /// </summary>
        /// <param name="intNumberOfSpaces"></param>
        /// <returns>String</returns>
        public string _Space(int intNumberOfSpaces)
        {
            return new String(' ', intNumberOfSpaces);
        }

        /// <summary>
        /// New Line Character
        /// </summary>
        /// <returns></returns>
        public string _NewLine()
        {
            return ("\n");
        }

        /// <summary>
        /// Double Quote Character
        /// </summary>
        /// <returns></returns>
        public string _DoubleQuote()
        {
            return ("\"");
        }

        /// <summary>
        /// SingleQuote Character
        /// </summary>
        /// <returns></returns>
        public string _SingleQuote()
        {
            return ("\'");
        }

        /// <summary>
        /// Calls Environment.Exit(0);
        /// </summary>
        public void _Quit()
        {
            Environment.Exit(0);
        }

        /// <summary>
        /// Returns the backslash character
        /// </summary>
        /// <returns></returns>
        public string _Backslash()
        {

            return ("\\");
        }

        /// <summary>
        /// Returns a null character
        /// </summary>
        /// <returns></returns>
        public string _Null()
        {

            return ("\0");
        }

        /// <summary>
        /// Bell. Same as Alert
        /// </summary>
        /// <returns></returns>
        public string _Bell()
        {

            return ("\a");
        }

        /// <summary>
        /// Alert. Same as Bell
        /// </summary>
        /// <returns></returns>
        public string _Alert()
        {

            return ("\a");
        }

        /// <summary>
        /// Backspace Character
        /// </summary>
        /// <returns></returns>
        public string _Backspace()
        {

            return ("\b");
        }

        /// <summary>
        /// Form Feed Character
        /// </summary>
        /// <returns></returns>
        public string _FormFeed()
        {

            return ("\f");
        }

        /// <summary>
        /// Carriage Return Character
        /// </summary>
        /// <returns></returns>
        public string _CarriageReturn()
        {

            return ("\r");`enter code here`
        }

        /// <summary>`enter code here`
        /// Vertical Tab Character
        /// </summary>
        /// <returns></returns>
        public string _VerticleTab()
        {

            return ("\v");
        }
    }
}