Как в С# разбить строку на две переменные по разделителю?
Как в С# разбить строку на две переменные по разделителю?
есть строка kek:kek4chanmemamoral Надо обрезать все до : и забить это в первую переменную , а остальное в вторую:
var 1 = kek; var 2 = kek4chanmemamoral;
Отслеживать
5,185 1 1 золотой знак 18 18 серебряных знаков 33 33 бронзовых знака
задан 18 мая 2017 в 18:54
JonCina1337 JonCina1337
33 1 1 золотой знак 1 1 серебряный знак 3 3 бронзовых знака
Хотя бы примерно: что этими магическими словами автор хотел выразить?
18 мая 2017 в 18:55
есть строка kek:kek4chanmemamoral надо сделать var 1 = kek ; var 2 = kek4chanmemamoral;
18 мая 2017 в 18:58
а условия получения строки гарантируют что первые три символа являются первой переменной? или просто разбить строку при помощи символа «:»?
18 мая 2017 в 19:00
ссорян что не обьяснил правильно. Надо обрезать все до : и забить это в первую переменную , а остальное в вторую
18 мая 2017 в 19:01
18 мая 2017 в 19:08
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Можно при помощи конструкции string.Split():
string text = "kek:kek2cheburek"; string[] words= text.Split(new char[]); // new char[] - массив символов-разделителей. Как меня поправили в // комментариях, в данном случае достаточно написать text.Split(':') string first = words[0]; string second = words[1]; Console.WriteLine(first); Console.WriteLine(second);
В этом коде мы создаём массив строк words, забиваем его содержимым строки, разбитым знаком «:». Если вставить два двоеточия — будет три элемента, вставь три двоеточия в строку — будет 4 и т.д.
Надеюсь понятно расписал.
Как разбить строку по разделителю?
Решил харнить базу в файле. В строе хранить записи, которые разделены точкой с запятой. База будет небольшой, значений всего три штуки, по этому решил особо не заморачиваться. Но проблема пришла откуда не ждал. Не получается разбить полученную строку по разделителю. Сам код выглядит так:
#include #include #include using namespace std; int main(int argc, char *argv[]) < ifstream fin; fin.open("/home/MyUzer/cpp/baze.txt"); string FileLine; if (fin.is_open())< cout > > else cout
Ошибка в 18 строке:
error: cannot convert ‘std::__cxx11::string’ to ‘char*’
Понимаю, что ему не получается конвертировать string в char, но как решить сию проблему — искренне Хз.
- Вопрос задан более трёх лет назад
- 1524 просмотра
6 комментариев
Средний 6 комментариев
Все способы разделить строку в массив подстрок в 1С 8
Существует много способов разделения строки на подстроки, выбор способа зависит от цели, которую ставит перед собой разработчик, а также от режима совместимости, который указан настройках конфигурации.
СтрРазделить()
Начиная с версии платформы 8.3.6 для разделения строки в массив можно воспользоваться стандартной функцией платформы :
СтрРазделить(Строка>, Разделитель>, ВключатьПустые>)
Параметры:
| Имя параметра | Тип | Описание |
| (обязательный) | Строка | Входная строка |
| (обязательный) | Строка | Строка символов, каждый из которых является индивидуальным разделителем. |
| (необязательный) | Булево | Указывает необходимость включать в результат пустые строки, которые могут образоваться в результате разделения исходной строки. Значение по умолчанию: Истина. |
Возвращаемое значение — Тип Массив, Массив строк, которые получились в результате разделения входной строки
Если у вас разделитель это слово или набор символов, тогда эта функция вам не подойдет, используйте функция из БСП с аналогичными параметрами.
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Строка>, Разделитель>, ПропускатьПустыеСтроки>);
Подробней о этой функции или о других функциях из БСП вы можете прочитать на портале ИТС
Разделение строк до версии 8.3.6
Если вы получили ошибку: Процедура или функция с указанным именем не определена (СтрРазделить), тогда этот совет поможет вам:
В конфигурациях на обычных формах, например УТ 10.3 строки можно разделить через функцию БСП
ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Строка>, Разделитель>);
Своя функция для разделения строк
// Функция - Разделяет строку на массив по указанному разделителю // // Параметры: // ВходящаяСтрока - Строка - Строка для разделения // Разделитель - Строка - Строка разделитель // // Возвращаемое значение: // Массив - Массив строк, которые получились в результате разделения входной строки // Функция СтрРазделить(ВходящаяСтрока, Разделитель) Рез = Новый Массив(); ВрСтрока = СтрЗаменить(ВходящаяСтрока, Разделитель, Символы.ПС); Для Сч = 1 По СтрЧислоСтрок(ВрСтрока) Цикл Стр = СтрПолучитьСтроку(ВрСтрока, Сч); Если Разделитель = " " и СокрЛП(Стр) = "" Тогда Продолжить; КонецЕсли; Рез.Добавить(Стр); КонецЦикла; Возврат Рез; КонецФункции
Если вы знаете более эффективный способ разделения строки, пожалуйста , напишите об этом в комментариях )
Как разделить строку в C#
C# Split () обрабатывает разделение на заданные строковые и символьные разделители. Он возвращает массив String, содержащий подстроки, разделенные данным массивом System.Char.
Метод String Split игнорирует любой элемент разделителя, значение которого равно null или пустая строка («»).
Синтаксис:
string[] string.split(string[] separator)
Параметры:
Разделитель — данный разделитель.
Возвращает:
Массив строк, разделенных одним или несколькими символами в разделителе.
Пример String Split в C#
using System; using System.Windows.Forms; namespace WindowsApplication < public partial class Form1 : Form < public Form1() < InitializeComponent(); >private void button1_Click(object sender, EventArgs e) < string str = null; string[] strArr = null; int count = 0; str = "Welcome to CSharp split test scenario"; char[] splitchar = < ' ' >; strArr = str.Split(splitchar); for (count = 0; count > > >
Welcome to CSharp split test scenario
Как разделять строки с использованием регулярных выражений?
Методы регулярного выражения Split () аналогичны методу String.Split (), за исключением того, что метод Regex.Split () разделяет строку на разделителе, определяемом регулярным выражением, вместо набора символов.
При использовании регулярных выражений вы должны использовать следующее пространство имен:
using System.Text.RegularExpressions; string str = "test1\n \ntest2\n \ntest3\n \n \ntest4"; string[] result = Regex.Split(str, "\n\\s*"); for (int i = 0; i < result.Length; i++) MessageBox.Show(result[i]);
test1 test2 test3 test4
Мы можем разделить строку на несколько разделителей символов, используя метод String.split().
string input = "test1)(test2)(test3)(test4)(test5"; string[] result = input.Split(new string[] < ")(" >, StringSplitOptions.None); foreach (string s in result) MessageBox.Show(s);
test1 test2 test3 test4 test5
Использование регулярных выражений для нескольких символов
string input = "test1)(test2)(test3)(test4)(test5"; string[] result = Regex.Split(input, @"\)\("); foreach (string s in result) MessageBox.Show(s);
test1 test2 test3 test4 test5
Вы можете разделить строку на новую строку или возврат каретки с помощью разделителя «\r\n».
string test = "test1\ntest2\r\ntest3\ntest4\n"; string[] result = test.Split(new string[] < "\n", "\r\n" >, StringSplitOptions.RemoveEmptyEntries); foreach (string s in result) MessageBox.Show(s);
test1 test2 test3 test4
Environment.NewLine
Также вы можете использовать Environment.NewLine для удаления новой строки из строки.
string test = "test1\r\ntest2\r\ntest3\r\ntest4"; string[] result = test.Split(new string[] < Environment.NewLine >, StringSplitOptions.None); foreach (string s in result) MessageBox.Show(s);
test1 test2 test3 test4
Как разбить строку на List
Вы можете вернуть результат метода String splt () в список C#. Следующая программа преобразует String Array в список.
string s = "This is a sentence."; IList list = new List(s.Split(new string[] < " is " >, StringSplitOptions.None)); foreach (string element in list)
StringSplitOptions.RemoveEmptyEntries гарантирует, что возвращаемое значение не включает элементы массива, содержащие пустую строку.
Следующая программа C# показывает, как удалить все пробелы из строки с помощью StringSplitOptions.RemoveEmptyEntries.
using System.Linq; using System.Text; using System.Windows.Forms; using System.Text.RegularExpressions; namespace WindowsFormsApplication1 < public partial class Form1 : Form < public Form1() < InitializeComponent(); >private void button1_Click(object sender, EventArgs e) < string myStrA = "test1 test2 test3 test4 test5"; string[] result = myStrA.Split(new char[0], StringSplitOptions.RemoveEmptyEntries); foreach (string s in result) MessageBox.Show(s); >> >
test1 test2 test3 test4 test5