У меня есть шестнадцатеричная входная строка "0000095700012A27". Я хочу разделить входную строку на основе ввода моего текстового поля, который я закодировал следующим образом:
String txtbox_input = "-2,4,-4,4,2";
String pattern = ",";
String[] splitters = Regex.Split(txtbox_input, pattern);
Он будет разделен на основе моего txtbox_input, и в основном я хочу, чтобы мой вывод был:
00,0009,5700,012A,27
Попутно можно ли определить txtbox_input как если он отрицательный, он пропустит конвертацию? Поскольку я хотел, чтобы мои данные разделения были преобразованы следующим образом, если число положительное.
data = Convert.ToUInt16(splitdata, 16);
Что вы сделали для этого?
@YeldarKurmangaliyev знак минус означает, что индикатор должен или не выполнять преобразование после разделения.
Должно ли это быть регулярное выражение, а не просто использование подстроки? Также, почему ваш формат в строке, а не в правильном классе с int и bool (или что-то в этом роде), чтобы избежать сложного синтаксического анализа, чтобы решить, что вам нужно делать?
@FaizanRabbani ранее, я мог получить конкретную длину 4, например. 012A в качестве данных, а затем преобразовать их обратно в десятичное. Но я склонен увеличивать размер сбора данных и преобразовывать его в зависимости от моих потребностей.
Почему бы не выполнить простой цикл for через ваш разделенный массив txtbox_input, получая подстроку на основе абсолютного значения - нет необходимости в регулярном выражении.





В случае, если мы хотим игнорировать все минусы и, таким образом, возвращать последовательные куски длиной 2, 4, 4, 4, 2 символов
String source = "0000095700012A27";
String txtbox_input = "-2,4,-4,4,2";
String pattern = ",";
var data = txtbox_input
.Split(new string[] { pattern }, StringSplitOptions.RemoveEmptyEntries)
.Select(item => Math.Abs(int.Parse(item))) // Math.Abs - ignoring minus
.Select(length => {
string item = source.Substring(0, length);
source = source.Substring(length);
return item;
})
// .Select(item => Convert.ToUInt16(item, 16)) // if you want UInt16 items
.ToArray(); // Let's have an array of chunks
Console.Write(string.Join(",", data));
Исход:
00,0009,5700,012A,27
Что именно означают знаки
-в ваших материалах? Каков ожидаемый результат для вашего-2,4,-4,4,2?