@Envywewok

Как выдрать из строки нужные символы зная позиции?

Вроде не трудная задача, но что то я не понял как лучше сделать. Вот пример названия файла - N54E026.hgt
Формат названия всегда одинаковы - 1 буква / 2 цифры / 1 буква / 3 цифры / + расширение. (а значит и расположение нужных символов тоже).

Задача в том что повыдергивать все эти позиции (1 буква / 2 цифры / 1 буква / 3 цифры) в 4 разные переменные. Как это лучше сделать?
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
WNeZRoS
@WNeZRoS
"Лучше" бывает разное: скорость работы, затраты памяти, понятность кода.

По скорости работы и затратам памяти этот вариант самый оптимальный:
static void Parse(string name = "N54E026.hgt")
{
    char c1 = name[0];
    int n1 = (name[1] - '0') * 10 + (name[2] - '0');
    char c2 = name[3];
    int n2 = (name[4] - '0') * 100 + (name[5] - '0') * 10 + (name[6] - '0');
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
...
  var fn = "N54E026.hgt";
  var c1 = fn[0];
  Console.WriteLine($"первый символ {c1}");
...
  var d2 = fn.Substring(1, 2);
  Console.WriteLine($"фрагмент из 2х символов, начиная со второй позиции {d2}");
  if(int.TryParse(d2, out var n2))
    Console.WriteLine($"численное значение d2 {n2}");
...
Ответ написан
Комментировать
Zoominger
@Zoominger
System Integrator
string one_char = name[0];
string two_numbers = name[1] + name[2];
string another_one_char = name[3];
//и так далее
Ответ написан
Комментировать
darkhorse77
@darkhorse77
C# Software Engineer
Используйте метод ToCharArray() для перевода строки в массив символов. Например:

string fileName = "N54E026.hgt";
    char[] chars = fileName.ToCharArray();
            
    var first = chars[0];
    var second = chars[1] + chars[2];
    var third = chars[3];
    var fourth = chars[4] + chars[5] + chars[6];
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы