Copyright © 2021 TAKEHANA TADASHI
著作日時:2021.11.10.水. 11:45:00 著作者:竹花 忠
更新版著作日時:2022.03.24.木. 08:01:00 著作者:竹花 忠
RUST言語におけるUTF8ファイルのBOMの削除の例示:
ファイルの先頭の3バイトにBOMが付加されていたなら、それを削除するプログラム例。
ここで、contentsは、ファイルの全内容を読み込んだ文字列スライスとする。
新バージョン:
let &(mut lineupd);
for (i,line) in contents.lines().enumerate(){
lineupd = line;
if i == 0 && line.len() >= 3{
let bytes = line.as_bytes();
if bytes[0]==239 && bytes[1]==187 && bytes[2]==191{
(_, lineupd) = line.split_at(3);
}
}
println!("lineupd = {}", lineupd);//lineupdは、BOMの削除された可変文字列スライス。
}
ちなみに、.split_at(3)は、文字列スライスを、その先頭から3文字までの文字列スライスと、4文字目以降の文字列スライスとに分割して、タプルにして返すメソッドである。
したがって、上記の(_, lineupd) = line.split_at(3);あっては、タプルの2番目の要素であるlineupdに、BOMの直後からの文字列スライスが設定される。
旧バージョン:
let mut linestr:String;
let &(mut lineupd);
for (i,line) in contents.lines().enumerate(){
lineupd = line;
if i == 0 && line.len() >= 3{
let bytes = line.as_bytes();
if bytes[0]==239 && bytes[1]==187 && bytes[2]==191{
let mut strline = line.to_string();
let ll = strline.as_mut_str();
let b = unsafe{ll.as_bytes_mut()};
b[0] = b' ';
b[1] = b' ';
b[2] = b' ';
let mut cv : Vec
// println!("cv = {:?}", cv);
cv.remove(0);
cv.remove(0);
cv.remove(0);
// println!("cv = {:?}", cv);
linestr = cv.iter().collect();
lineupd = &linestr;
}
}
println!("lineupd = {}", lineupd);//lineupdは、BOMの削除された可変文字列スライス。
}