#byte-offset #line-string #numbers #find #within #text #line-positions

line-numbers

通过字节偏移快速查找字符串中的行号

5 个不稳定版本

0.3.0 2023年11月19日
0.2.2 2023年8月26日
0.2.1 2023年8月6日
0.2.0 2023年8月6日
0.1.0 2023年8月6日

479文本处理 中排名

Download history 476/week @ 2024-03-13 1316/week @ 2024-03-20 545/week @ 2024-03-27 720/week @ 2024-04-03 369/week @ 2024-04-10 328/week @ 2024-04-17 514/week @ 2024-04-24 367/week @ 2024-05-01 789/week @ 2024-05-08 749/week @ 2024-05-15 434/week @ 2024-05-22 388/week @ 2024-05-29 311/week @ 2024-06-05 313/week @ 2024-06-12 251/week @ 2024-06-19 332/week @ 2024-06-26

每月下载量 1,291
6 crate 中使用(4 个直接使用)

MIT 许可证

10KB
199

line-numbers crates.io codecov.io

line-numbers 是一个 Rust crate,用于高效地查找字符串偏移量对应的行号。

用法

创建一个 LinePositions,然后你可以找到一个偏移量的行号。

let s = "foo\nbar\nbaz\n";
let s_lines: Vec<_> = s.lines().collect();

let line_positions = LinePositions::from(s);

let offset = 5;
let line_num = line_positions.from_offset(offset);
println!(
    "Offset {} is on line {}, which has the text {:?}.",
    offset,
    line_num.display(),
    s_lines[line_num.as_usize()]
);

类似项目

  • line-span 解决了类似的问题,但每次都会扫描整个字符串。

lib.rs:

高效地在字符串内查找行号和行跨度。

use line_numbers::LinePositions;

let s = "foo\nbar\nbaz\n";
let s_lines: Vec<_> = s.lines().collect();

let line_positions = LinePositions::from(s);

let offset = 5;
let line_num = line_positions.from_offset(offset);
println!(
    "Offset {} is on line {}, which has the text {:?}.",
    offset,
    line_num.display(),
    s_lines[line_num.as_usize()]
);

无运行时依赖