- String. Split Метод
- Определение
- Перегрузки
- Комментарии
- Пример
- Split(Char, Int32, StringSplitOptions)
- Параметры
- Возвращаемое значение
- Комментарии
- Применяется к
- Split(String[], Int32, StringSplitOptions)
- Параметры
- Возвращаемое значение
- Исключения
- Примеры
- Комментарии
- Массив разделителя
- Сведения о сравнении
- Вопросы производительности
- Примечания для тех, кто вызывает этот метод
- Применяется к
- Split(Char[], Int32, StringSplitOptions)
- Параметры
- Возвращаемое значение
- Исключения
- Примеры
- Комментарии
- Вопросы производительности
- Примечания для тех, кто вызывает этот метод
- Применяется к
- Split(String[], StringSplitOptions)
- Параметры
- Возвращаемое значение
- Исключения
- Примеры
- Комментарии
- Массив разделителя
- Сведения о сравнении
- Вопросы производительности
- Примечания для тех, кто вызывает этот метод
String. Split Метод
Определение
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает строковый массив, содержащий подстроки данного экземпляра, разделенные элементами заданной строки или массива знаков Юникода.
Перегрузки
Разбивает строку на максимальное число подстрок на основе указанного символа-разделителя и, при необходимости, параметров. Разбивает строку на максимальное число подстрок на основе указанного разделителя символов, при необходимости исключая пустые подстроки из результата.
Разбивает строку на максимальное число подстрок на основе указанных строк-разделителей и, при необходимости, параметров.
Разбивает строку на максимальное число подстрок на основе указанных символов-разделителей и, при необходимости, параметров.
Разбивает строку на подстроки на основе указанных строк-разделителей и, при необходимости, параметров.
Разбивает строку на максимальное число подстрок на основе указанной строки-разделителя и, при необходимости, параметров.
Разбивает строку на подстроки на основе указанных символов-разделителей и параметров.
Разбивает строку на максимальное число подстрок на основе указанных символов-разделителей.
Разбивает строку на подстроки на основе указанного символа-разделителя и, при необходимости, параметров.
Разделяет строку на подстроки в соответствии с указанной строкой-разделителем.
Разбивает строку на подстроки на основе указанных символов-разделителей.
Комментарии
Split используется для разбиения строки с разделителями на подстроки. Можно использовать либо массив символов, либо массив строк, чтобы указать ноль или несколько символов или строк. Если символы-разделители не указаны, строка разбивается по символам пробела.
Перегрузки Split метода позволяют ограничить количество подстрок, возвращаемых методом ( Split(Char[], Int32) метод), указать, следует ли включать пустые строки и/или усекать подстроки в результатах ( Split(Char[], StringSplitOptions) Split(String[], StringSplitOptions) методы и) или для обоих Split(Char[], Int32, StringSplitOptions) методов ( Split(String[], Int32, StringSplitOptions) методы и).
SplitМетод не всегда является лучшим способом разбивать строку с разделителями на подстроки. Если вы не хотите извлекать все подстроки из строки с разделителями или хотите проанализировать строку на основе шаблона вместо набора символов-разделителей, рассмотрите возможность использования регулярных выражений или объедините один из методов поиска, который возвращает индекс символа с помощью Substring метода. Дополнительные сведения см. в разделе Извлечение подстрок из строки.
Пример
Ниже показаны три различные перегрузки String.Split() . Первый пример вызывает Split(Char[]) перегрузку и передается в один разделитель.
Как видите, символы-точки ( . ) содержатся в двух подстроках. Если вы хотите исключить символы-точки, добавьте символ-точку как дополнительный символ разделителя. В следующем примере показано, как это сделать.
Точки исчезли из подстрок, однако теперь появились две дополнительные пустые подстроки. Эти пустые подстроки представляют подстроку между словом и периодом после него. Чтобы исключить из результирующего массива пустые подстроки, вызовите перегрузку Split(Char[], StringSplitOptions) и укажите StringSplitOptions.RemoveEmptyEntries для параметра options .
В разделах для отдельных перегрузок String.Split() содержатся дополнительные примеры.
Split(Char, Int32, StringSplitOptions)
Разбивает строку на максимальное число подстрок на основе указанного символа-разделителя и, при необходимости, параметров. Разбивает строку на максимальное число подстрок на основе указанного разделителя символов, при необходимости исключая пустые подстроки из результата.
Параметры
Символ, разделяющий подстроки в этом экземпляре.
Максимальное количество элементов в массиве.
Побитовое сочетание значений перечисления, которое указывает, следует ли обрезать подстроки и включать пустые подстроки.
Возвращаемое значение
Массив, содержащий подстроки из этого экземпляра (не более count ), разделенные символом separator .
Комментарии
Если строка уже была разбита count на 1 раз, но конец строки не был достигнут, последняя строка в возвращенном массиве будет содержать оставшуюся конечную подстроку этого экземпляра без изменений.
Применяется к
Split(String[], Int32, StringSplitOptions)
Разбивает строку на максимальное число подстрок на основе указанных строк-разделителей и, при необходимости, параметров.
Параметры
Строки, разделяющие подстроки в данной строке, пустой массив, не содержащий разделителей, или null .
Максимальное число возвращаемых подстрок.
Побитовое сочетание значений перечисления, которое указывает, следует ли обрезать подстроки и включать пустые подстроки.
Возвращаемое значение
Массив, элементы которого содержат подстроки данной строки, разделенные одной или более строками из separator . Дополнительные сведения см. в разделе «Примечания».
Исключения
count является отрицательным значением.
options не является одним из значений StringSplitOptions.
Примеры
В следующем примере StringSplitOptions перечисление используется для включения или исключения подстрок, созданных Split методом.
Комментарии
Строки разделителей не включаются в элементы возвращаемого массива.
Если этот экземпляр не содержит ни одной строки в separator или count параметр равен 1, возвращаемый массив состоит из одного элемента, содержащего этот экземпляр.
Если separator параметр имеет значение null или не содержит символов, то символы пробела считаются разделителями. Символы пробела определяются стандартом Юникода, а Char.IsWhiteSpace метод возвращает, true если они передаются в него.
Для передачи null string[] separator параметра необходимо указать тип null для устранения неоднозначности вызова из других перегрузок, таких как Split(Char[], Int32, StringSplitOptions) . В следующем примере показано несколько способов однозначного определения этой перегрузки.
Если count параметр равен нулю или options параметр имеет значение RemoveEmptyEntries , а длина этого экземпляра равна нулю, возвращается пустой массив.
Каждый элемент separator определяет отдельный разделитель, состоящий из одного или нескольких символов. Если options параметр имеет значение None , а два разделителя являются смежными или разделитель находится в начале или в конце данного экземпляра, соответствующий элемент массива содержит Empty .
Если count в этом экземпляре больше подстрок, то первый минус 1 count подстрока возвращается в первые count меньше 1 элементов возвращаемого значения, а остальные символы в этом экземпляре возвращаются в последнем элементе возвращаемого значения.
Если count больше числа подстрок, возвращаются доступные подстроки и исключение не создается.
Массив разделителя
Если любой из элементов separator состоит из нескольких символов, вся подстрока считается разделителем. Например, если один из элементов separator имеет значение «10», попытка разделить строку «This10is10a10string». Возвращает этот массив из четырех элементов: <"this", "имеет значение", "a", "строка". >.
Сведения о сравнении
SplitМетод извлекает подстроки в этой строке, разделенные одной или несколькими строками в separator параметре, и возвращает эти подстроки как элементы массива.
SplitМетод ищет разделители, выполняя сравнения, используя правила сортировки порядковых номеров с учетом регистра. Дополнительные сведения о сортировке по словам, строкам и порядковым номерам см. в разделе System.Globalization.CompareOptions перечисление.
SplitМетод игнорирует любой элемент separator , значение которого равно или является null пустой строкой («»).
Чтобы избежать неоднозначных результатов, когда строки в separator имеют общие символы, Split метод переходит от начала до конца значения экземпляра и соответствует первому элементу в separator , который равен разделителю в экземпляре. Порядок, в котором подстроки встречаются в экземпляре, имеет приоритет над порядком элементов в separator .
Например, рассмотрим экземпляр, значение которого равно «abcdef». Если первый элемент в имел значение » separator EF», а второй элемент — «bcde», результатом операции разбиения будет «a» и «f». Это обусловлено тем, что обнаружена подстрока в экземпляре «bcde», и она соответствует элементу separator до обнаружения подстроки «f».
Однако если первый элемент имел значение » separator BCD», а второй элемент — «BC», результатом операции разбиения будет «a» и «EF». Это происходит потому, что «BCD» является первым разделителем в separator , который соответствует разделителю в экземпляре. Если порядок разделителей был реверсирован, так что первый элемент был «BC», а второй элемент — «BCD», результатом будет «a» и «def».
Вопросы производительности
SplitМетоды выделяют память для возвращаемого объекта массива и String объекта для каждого элемента массива. Если для приложения требуется оптимальная производительность или управление выделением памяти является критически важным в приложении, рассмотрите возможность использования IndexOf IndexOfAny метода или и, при необходимости, Compare метода, чтобы нахождение подстроки в строке.
При разделении строки на символ-разделитель используйте IndexOf IndexOfAny метод или для нахождение символа разделителя в строке. При разделении строки в строке-разделителе используйте IndexOf IndexOfAny метод или для нахождение первого символа строки разделителя. Затем используйте Compare метод, чтобы определить, равны ли символы, указанные после первого символа, оставшимся символам строки разделителя.
Кроме того, если для разделения строк в нескольких вызовах методов используется один и тот же набор символов Split , рассмотрите возможность создания одного массива и ссылки на него в каждом вызове метода. Это значительно сокращает дополнительную нагрузку на каждый вызов метода.
Примечания для тех, кто вызывает этот метод
в платформа .NET Framework 3,5 и более ранних версиях, если Split(Char[]) методу передается значение separator , равное null или не содержащее символов, метод использует немного другой набор символов пробела, чтобы разделить строку, чем Trim(Char[]) метод, чтобы обрезать строку. начиная с платформа .NET Framework 4, оба метода используют идентичный набор пробельных символов юникода.
Применяется к
Split(Char[], Int32, StringSplitOptions)
Разбивает строку на максимальное число подстрок на основе указанных символов-разделителей и, при необходимости, параметров.
Параметры
Массив символов, разделяющих подстроки в данной строке, пустой массив, не содержащий разделителей, или null .
Максимальное число возвращаемых подстрок.
Побитовое сочетание значений перечисления, которое указывает, следует ли обрезать подстроки и включать пустые подстроки.
Возвращаемое значение
Массив, содержащий подстроки данной строки, разделенные одним или несколькими символами из separator . Дополнительные сведения см. в разделе «Примечания».
Исключения
count является отрицательным значением.
options не является одним из значений StringSplitOptions.
Примеры
В следующем примере StringSplitOptions перечисление используется для включения или исключения подстрок, созданных Split методом.
Комментарии
Символы разделителей не включаются в элементы возвращаемого массива.
Если этот экземпляр не содержит символов в separator или count параметр равен 1, возвращаемый массив состоит из одного элемента, содержащего этот экземпляр.
Если separator параметр имеет значение null или не содержит символов, то символы пробела считаются разделителями. Символы пробела определяются стандартом Юникода, а Char.IsWhiteSpace метод возвращает, true если они передаются в него.
Для передачи null char[] separator параметра необходимо указать тип null для устранения неоднозначности вызова из других перегрузок, таких как Split(String[], Int32, StringSplitOptions) . В следующем примере показано несколько способов однозначного определения этой перегрузки.
Если count параметр равен нулю или options параметр имеет значение RemoveEmptyEntries , а длина этого экземпляра равна нулю, возвращается пустой массив.
Каждый элемент separator определяет отдельный символ-разделитель. Если options параметр имеет значение None , а два разделителя являются смежными или разделитель находится в начале или в конце данного экземпляра, соответствующий элемент массива содержит Empty .
Если count в этом экземпляре больше подстрок, то первый минус 1 count подстрока возвращается в первые count меньше 1 элементов возвращаемого значения, а остальные символы в этом экземпляре возвращаются в последнем элементе возвращаемого значения.
Если count больше числа подстрок, возвращаются доступные подстроки и исключение не создается.
Вопросы производительности
SplitМетоды выделяют память для возвращаемого объекта массива и String объекта для каждого элемента массива. Если для приложения требуется оптимальная производительность или управление выделением памяти является критически важным в приложении, рассмотрите возможность использования IndexOf IndexOfAny метода или и, при необходимости, Compare метода, чтобы нахождение подстроки в строке.
При разделении строки на символ-разделитель используйте IndexOf IndexOfAny метод или для нахождение символа разделителя в строке. При разделении строки в строке-разделителе используйте IndexOf IndexOfAny метод или для нахождение первого символа строки разделителя. Затем используйте Compare метод, чтобы определить, равны ли символы, указанные после первого символа, оставшимся символам строки разделителя.
Кроме того, если для разделения строк в нескольких вызовах методов используется один и тот же набор символов Split , рассмотрите возможность создания одного массива и ссылки на него в каждом вызове метода. Это значительно сокращает дополнительную нагрузку на каждый вызов метода.
Примечания для тех, кто вызывает этот метод
в платформа .NET Framework 3,5 и более ранних версиях, если Split(Char[]) методу передается значение separator , равное null или не содержащее символов, метод использует немного другой набор символов пробела, чтобы разделить строку, чем Trim(Char[]) метод, чтобы обрезать строку. начиная с платформа .NET Framework 4, оба метода используют идентичный набор пробельных символов юникода.
Применяется к
Split(String[], StringSplitOptions)
Разбивает строку на подстроки на основе указанных строк-разделителей и, при необходимости, параметров.
Параметры
Массив строк, разделяющих подстроки в данной строке, пустой массив, не содержащий разделителей, или null .
Побитовое сочетание значений перечисления, которое указывает, следует ли обрезать подстроки и включать пустые подстроки.
Возвращаемое значение
Массив, элементы которого содержат подстроки данной строки, разделенные одной или более строками из separator . Дополнительные сведения см. в разделе «Примечания».
Исключения
options не является одним из значений StringSplitOptions.
Примеры
В следующем примере показана разница в массивах, возвращаемых путем вызова String.Split(String[], StringSplitOptions) метода строки с options параметром, равным StringSplitOptions.None и StringSplitOptions.RemoveEmptyEntries .
В следующем примере определяется массив разделителей, включающих знаки препинания и пробелы. Передача этого массива вместе со значением StringSplitOptions.RemoveEmptyEntries в Split(String[], StringSplitOptions) метод возвращает массив, состоящий из отдельных слов из строки.
Обратите внимание, что метод вызывается с options аргументом, для которого задано значение StringSplitOptions.RemoveEmptyEntries . Это предотвращает включение в возвращаемый массив String.Empty значений, представляющих собой пустые подстроки, совпадающие между знаками препинания и пробелами.
Комментарии
Если строка отделяется от известного набора строк, можно использовать Split метод, чтобы разделить его на подстроки.
Строки разделителей не включаются в элементы возвращаемого массива. Например, если separator массив содержит строку «—«, а значение текущего экземпляра строки — «AA—BB—CC», метод возвращает массив, содержащий три элемента: «AA», «BB» и «CC».
Если этот экземпляр не содержит строк в separator , возвращаемый массив состоит из одного элемента, содержащего этот экземпляр.
Если options параметр имеет значение, RemoveEmptyEntries а длина этого экземпляра равна нулю, метод возвращает пустой массив.
Каждый элемент separator определяет отдельный разделитель, состоящий из одного или нескольких символов. Если options аргумент имеет значение None , а два разделителя являются смежными или разделитель находится в начале или в конце данного экземпляра, соответствующий элемент массива содержит String.Empty . Например, если separator содержит два элемента, «-» и » _ «, значением экземпляра строки является «- _ AA- _ «, а значение options аргумента — None , метод возвращает массив строк со следующими пятью элементами:
String.Empty, представляющий пустую строку, предшествующую подстроке «-» с индексом 0.
String.Empty, представляющий пустую строку между подстрокой «-» с индексом 0 и подстрокой «_» с индексом 1.
String.Empty, представляющий пустую строку, следующую за подстрокой «-» с индексом 4.
String.Empty, представляющий пустую строку, следующую за подстрокой «_» в индексе 5.
Массив разделителя
Если любой из элементов separator состоит из нескольких символов, вся подстрока считается разделителем. Например, если один из элементов separator имеет значение «10», попытка разделить строку «This10is10a10string». Возвращает следующий массив из четырех элементов: <"this", "имеет значение", "a", "строка". >.
Если separator параметр имеет значение null или не содержит непустые строки, то символы пробела считаются разделителями. Символы пробела определяются стандартом Юникода, а Char.IsWhiteSpace метод возвращает, true если они передаются в него.
Для передачи null string[] separator параметра необходимо указать тип null для устранения неоднозначности вызова из других перегрузок, таких как Split(Char[], StringSplitOptions) . В следующем примере показано несколько способов однозначного определения этой перегрузки.
Сведения о сравнении
SplitМетод извлекает подстроки в этой строке, разделенные одной или несколькими строками в separator параметре, и возвращает эти подстроки как элементы массива.
SplitМетод ищет разделители, выполняя сравнения, используя правила сортировки порядковых номеров с учетом регистра. Дополнительные сведения о сортировке по словам, строкам и порядковым номерам см. в разделе System.Globalization.CompareOptions перечисление.
SplitМетод игнорирует любой элемент separator , значение которого равно или является null пустой строкой («»).
Чтобы избежать неоднозначных результатов, когда строки в separator имеют общие символы, Split операция продолжается от начала до конца значения экземпляра и соответствует первому элементу в separator , который равен разделителю в экземпляре. Порядок, в котором подстроки встречаются в экземпляре, имеет приоритет над порядком элементов в separator .
Например, рассмотрим экземпляр, значение которого равно «abcdef». Если первый элемент в имел значение » separator EF», а второй элемент — «bcde», результатом операции разбиения будет массив строк, содержащий два элемента: «a» и «f». Это обусловлено тем, что обнаружена подстрока в экземпляре «bcde», и она соответствует элементу separator до обнаружения подстроки «f».
Однако, если первый элемент имел значение » separator BCD», а второй элемент — «BC», результатом операции разбиения будет массив строк, содержащий два элемента: «a» и «EF». Это происходит потому, что «BCD» является первым разделителем в separator , который соответствует разделителю в экземпляре. Если порядок разделителей был реверсирован, так что первый элемент был «BC», а второй — «BCD», результатом будет массив строк, содержащий два элемента: «a» и «def».
Вопросы производительности
SplitМетоды выделяют память для возвращаемого объекта массива и String объекта для каждого элемента массива. Если для приложения требуется оптимальная производительность или управление выделением памяти является критически важным в приложении, рассмотрите возможность использования IndexOf IndexOfAny метода или и, при необходимости, Compare метода, чтобы нахождение подстроки в строке.
При разделении строки на символ-разделитель используйте IndexOf IndexOfAny метод или для нахождение символа разделителя в строке. При разделении строки в строке-разделителе используйте IndexOf IndexOfAny метод или для нахождение первого символа строки разделителя. Затем используйте Compare метод, чтобы определить, равны ли символы, указанные после первого символа, оставшимся символам строки разделителя.
Кроме того, если для разделения строк в нескольких вызовах методов используется один и тот же набор символов Split , рассмотрите возможность создания одного массива и ссылки на него в каждом вызове метода. Это значительно сокращает дополнительную нагрузку на каждый вызов метода.
Примечания для тех, кто вызывает этот метод
в платформа .NET Framework 3,5 и более ранних версиях, если Split(Char[]) методу передается значение separator , равное null или не содержащее символов, метод использует немного другой набор символов пробела, чтобы разделить строку, чем Trim(Char[]) метод, чтобы обрезать строку. начиная с платформа .NET Framework 4, оба метода используют идентичный набор пробельных символов юникода.
Источник