Я использовал Split()
метод для разделения строк, но это работает, только если вы разделяете строку по символу. Есть ли способ разделить string
, с другой строкой, являющейся параметром разделения по?
Я попытался преобразовать сплиттер в массив символов, но безуспешно.
Другими словами, я хотел бы разделить string
:
THExxQUICKxxBROWNxxFOX
by xx
и возвращает массив со значениями:
БЫСТРО, КОРИЧНЕВЫЙ, ЛИС
Ответы:
Чтобы разделить строку, вам нужно использовать перегрузку массива строк .
источник
string.Split
.string[] Split(string pattern)
, который является наиболее естественным использованием, которое я мог придумать, но его там нет. Я написал C раньше, поэтому я привык к массивам символов, но я все еще не хочу видетьchar[]
всплывающее окно в коде C #, потому что это внезапно перетаскивает мое внимание с уровня потока на уровень байтов. Кто-нибудь знает, почему ребята из библиотеки C # разработали такой метод Split? Если есть веская причина, я могу попытаться оценить это, несмотря на неудобства.data.Split("xx")
?Существует перегрузка Split, которая принимает строки.
Вы можете использовать любой из этих StringSplitOptions
Таким образом, если строка "THExxQUICKxxxxBROWNxxFOX",
StringSplitOptions.None
вернет пустую запись в массиве для части "xxxx", покаStringSplitOptions.RemoveEmptyEntries
не будет.источник
это способ, которым я делаю это обычно.
Конечно, вам нужно:
или :
но опять же, мне нужна эта библиотека все время.
источник
RegEx.Split
a немного дороже, чем простоеString.Split
из-за накладных расходов регулярного выражения.Regex.Escape
сначала используйте строку, это исключит любые метасимволы регулярных выражений.Для этого есть перегрузка String.Split :
источник
Я обычно хотел бы использовать свое собственное расширение для этого:
Это, однако, приведет к исключению, если Microsoft решит включить эту перегрузку метода в более поздние версии. Это также вероятная причина, по которой Microsoft пока что не включила этот метод: по крайней мере одна компания, в которой я работал, использовала такое расширение во всех своих проектах на C #.
Также может быть возможным условно определить метод во время выполнения, если он не существует.
источник
params string[] splitter
в качестве второго параметра и изменитеnew[] {splitter}
наsplitter
для поддержки нескольких разделителей.Предыдущие ответы все верны. Я делаю еще один шаг и заставляю C # работать, определяя метод расширения для String:
Таким образом, я могу назвать ее для любой строки простым способом, который я наивно ожидал, когда впервые попытался выполнить это:
источник
Начиная с .NET Core 2.0, есть переопределение, которое принимает строку.
Так что теперь вы можете сделать
"THExxQUICKxxBROWNxxFOX".Split("xx")
.См. Https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netcore-2.0#System_String_Split_System_String_System_StringSplitOptions_
источник
Просто тщательно выберите заменяющий символ (выберите тот, который вряд ли уже присутствует в строке)!
источник
|
символ, по этой причине я думаю, что его опасно использовать.Это также легко:
источник
"THExQUICK"
там, где мы не хотим, чтобы оноСамый простой способ - использовать
String.Replace
:Или проще:
источник
xx
были.