Мне любопытно, почему .NET string.Empty.Split()
возвращает один элемент, содержащий пробельный символ?Почему .NET string.Empty.Split() возвращает один элемент, содержащий пробельный символ?
ответ
string.Empty.Split()
возвращает массив строк, который имеет значение string.Empty
в первой позиции. Что бы вы ожидали?
Дополнительная информация: Все, что до первого матча возвращается как первый элемент. Если совпадения нет, сама строка возвращается в первой позиции.
ОК, комбинация split и join меня смутила: ' '' var strings = string.Empty.Split(); '' ' '' 'var list = new Список
Ах, если бы я понял, что делает раскол, я бы не удивился, если бы получил место в начале моей объединенной строки. –
Итак, на ваш вопрос ответили? –
Небольшая коррекция в вашем заявлении. string.Empty.Split()
не возвращает один элемент с символом пробела, но возвращает элемент с пустой строкой. Это связано с тем, что метод split(), когда он не имеет аргументов, рассматривает пробел как разделитель. Но нет никакого пробела в string.Empty
. Поэтому он просто возвращает string.Empty как таковой в первом элементе выходного массива.
Когда вы ничего не предоставили в качестве сепаратора обеспечивают к методу Split
, он uses whitespaces by default:
private unsafe int MakeSeparatorList(char[] separator, ref int[] sepList) {
...
if (separator == null || separator.Length ==0) {
...
// If they passed null or an empty string, look for whitespace.
Так что, когда вы звоните string.Empty.Split()
, вы пытаетесь разбить строку на пуста пробельных символов. Их нет, поэтому метод возвращает всю строку в качестве единственного результата. Точно как вызов "Hello!".Split
возвратит string[] { "Hello!" }
Это не see
using System;
public class Program
{
public static void Main()
{
Console.WriteLine("ehh \"" + string.Empty.Split()[0] + "\"");
}
}
возвращается:
ehh ""
- 1. Прочитать пробельный символ из элемента XML
- 2. StreamReader возвращает еще один символ
- 3. Невозможно удалить пробельный символ пробела в excel
- 4. Почему OPENXML возвращает только один элемент
- 5. Создайте список, содержащий Т как один элемент
- 6. Загрузить файл.q из пути, содержащего пробельный символ
- 7. Tokenize пробельный символ (ы) в C
- 8. Tweepy JSON Неожиданный не-пробельный символ
- 9. Пустой пробел/пробельный символ для .htaccess
- 10. Sublime Text 2 strip следующий пробельный символ
- 11. php shuffle() возвращает один элемент
- 12. Результат JSON, содержащий только один элемент
- 13. ListView, содержащий только один элемент, отображается внизу
- 14. Почему мой метод swapCase возвращает только один символ?
- 15. Почему моя программа возвращает один и тот же символ?
- 16. Почему функция VB.Net, возвращающая строку, фактически возвращает только один символ?
- 17. Функция возвращает только один элемент
- 18. Почему моя строка возвращает символ?
- 19. Пробельный узел в XSLT
- 20. возвращает только один элемент массива
- 21. queue.get() возвращает только один элемент
- 22. Обратный стек возвращает один элемент
- 23. Капля, содержащий хэш-символ
- 24. Почему iterator.next() возвращает один и тот же элемент каждый раз?
- 25. Почему поиск Haskell всегда возвращает только один элемент?
- 26. NSInvalidArgumentException, содержащий один словарь
- 27. Delphi Firebird UDF возвращает только один символ
- 28. Symfony 2 SecureRandom() возвращает один символ
- 29. Найти элемент, содержащий символ Unicode с красивым супом
- 30. Почему в результате запроса отсутствует один символ?
может быть подобный вопрос http://stackoverflow.com/questions/2906621/undocumented- overload-of-string-split – Vladimir
** Это не так. ** Он возвращает массив, содержащий 1 пустую строку. В этом первом элементе нет символа пробела. Можете ли вы рассказать нам, почему вы думаете, что есть? Какой инструмент/код вы используете для показа содержимого этого первого элемента, который говорит вам, что там есть место? –
Вы можете избавиться от этого пространства, если вы передадите эту опцию 'StringSplitOptions.RemoveEmptyEntries' – Sherlock