Использование str::match_indices
:
let text = "Ten. Million. Questions. Let's celebrate all we've done together.";
let mut result = Vec::new();
let mut last = 0;
for (index, matched) in text.match_indices(|c: char| !(c.is_alphanumeric() || c == '\'')) {
if last != index {
result.push(&text[last..index]);
}
result.push(matched);
last = index + matched.len();
}
if last < text.len() {
result.push(&text[last..]);
}
println!("{:?}", result);
Печать:
["Ten", ".", " ", "Million", ".", " ", "Questions", ".", " ", "Let\'s", " ", "celebrate", " ", "all", " ", "we\'ve", " ", "done", " ", "together", "."]
Класс исключений «Exception» объявляется в модуле SysUtils. Таким образом, вы должны добавить «SysUtils» к вашему предложению использования.
uses
SysUtils;
procedure RaiseMyException;
begin
raise Exception.Create('Hallo World!');
end;
Возможно, вам понадобится добавить sysutils к предложению использования, оно не является встроенным и является дополнительным в соответствии с Delphi в двух словах.
You are using SysUtils aren't you? Exception is declared in there IIRC.
Не забудьте добавить SYSUTILS к вашим единицам использования.
Я также предлагаю вам хороший способ отслеживать категории, форматы сообщений и значение исключения:
Type TMyException=class
public
class procedure RaiseError1(param:integer);
class procedure RaiseError2(param1,param2:integer);
class procedure RaiseError3(param:string);
end;
implementation
class procedure TMyException.RaiseError1(param:integer);
begin
raise Exception.create(format('This is an exception with param %d',[param]));
end;
//declare here other RaiseErrorX
Простой способ использовать это:
TMyException.RaiseError1(123);