Есть много способов добиться этого, я представлю два.
Первый должен был бы разделить всю строку на «-», а затем присоединиться первые два элемента:
import std.stdio, std.string;
"s1-qwe-123".split("-")[0 .. 2]
.join("-")
.writeln; // -> "s1-qwe"
Это простое, но не может быть достаточно эффективным, так как вся строка должна быть прочитана , Другой метод, который я хотел бы предложить, - использовать регулярные выражения, поскольку существует функция matchFirst, которая читает строку только до первого появления выражения.
import std.stdio, std.regex;
"s1-qwe-123".matchFirst("[^-]+-[^-]+")[0]
.writeln; // -> "s1-qwe"
И если вы хотите, чтобы это было на самом деле быстро вы можете использовать регулярные выражения во время компиляции:
import std.stdio, std.regex;
"s1-qwe-123".matchFirst(ctRegex!("[^-]+-[^-]+"))[0]
.writeln; // -> "s1-qwe"
Извините, я имею в виду именно то, что показывают на примере. – Suliman
Увы, похоже, что мой anwser ошибся. Извини за это. – rcorre