Добавление пробелов между строками - PullRequest
2 голосов
/ 12 октября 2008

Как лучше всего добавлять пробелы между строками

myString = string.Concat("a"," ","b")

или

myString = string.Concat("a",Chr(9),"b")

Я использую stringbuilder для создания файла XML и ищу что-то более эффективное.

Спасибо

Редактировать ~ Язык VB.NET

Ответы [ 9 ]

8 голосов
/ 12 октября 2008

Создайте свой XML-файл с классом XmlDocument. Вы тратите свое время на создание строки с нуля.

5 голосов
/ 12 октября 2008

String.Join - это статический метод, который может использовать разделитель (в данном случае "") и массив строк.

string sentence = String.Join(" ", new string[] { "The", "quick", "brown", "fox" });
4 голосов
/ 12 октября 2008

Ну, для начала, chr (9) - символ табуляции - вы хотите использовать chr (32), чтобы получить пробел.

Тем не менее, первый вариант, string.Concat("a"," ","b"), является более читабельным. Я бы сконцентрировался на получении функционально правильного кода для начала. Оптимизация всегда должна быть последним шагом и ориентирована только на те области, которые в ней нуждаются. Другими словами, вам нужен базовый уровень для проверки ваших оптимизаций.

Слишком много раз вы оптимизируете, а потом все равно будете вынуждены изменить код, что означает, что ваши усилия по оптимизации были напрасными.

1 голос
/ 22 мая 2013
 Dim TestString As String
' Returns a string with 10 spaces.
TestString = Space(10)
' Inserts 10 spaces between two strings.
TestString = "Hello" & Space(10) & "World"
1 голос
/ 12 октября 2008

Если вы объединяете известное число строк, вероятно, лучше просто использовать +, так как компилятор переводит его в вызов string.Concat в любом случае. Так

s = a + " " + b

становится

s = string.Concat(a, " ", b)

Но первое намного читабельнее. Несмотря на обычное предостережение, StringBuilders обычно предпочтительнее, если делать это в цикле.

Использование Chr (32) над "" не повлияет на скорость, так как в этом случае Chr (x) транслируется во время компиляции в VB.Net (не знаю, так ли это всегда, но на моей машине это было ) так что вы просто затрудняете чтение без каких-либо преимуществ. Chr в основном используется для обратной совместимости и обычно лучше всего используется для определения символов вне диапазона печати. ​​

Тем не менее, вероятно, лучше использовать одну из библиотек фреймворка для построения XML, если это не очень маленький фрагмент.

1 голос
/ 12 октября 2008

В качестве альтернативы «традиционному» XMLDocument , если вы используете .NET 3.5 и выше, взгляните на новый XDocument / XElement занятия в LINQ.

Хороший учебник здесь:

http://www.hookedonlinq.com/Print.aspx?Page=LINQtoXML5MinuteOverview

1 голос
/ 12 октября 2008

Определенно не Chr (9). В конце концов, не все используют ascii.

0 голосов
/ 12 октября 2008

Я не вижу, где в примере кода в вопросе есть строитель строк; но так как вы говорите, что используете один; Я бы использовал:

sb.AppendFormat("{0} {1}", a, b);
0 голосов
/ 12 октября 2008

Самый простой способ - использовать агрегатную функцию для объединения элементов.

string[] input = new string[]{"a", "b"};
var withSpaces = input.Aggregate( (x,y) => x + " " + );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...