range_merge

Crates.iorange_merge
lib.rsrange_merge
version0.1.2
created_at2025-03-19 03:47:35.826245+00
updated_at2025-03-19 03:53:05.475298+00
descriptionrange_merge
homepagehttps://github.com/i18n-site/rust/tree/dev/range_merge
repositoryhttps://github.com/i18n-site/rust.git
max_upload_size
id1597683
size22,575
i18n.site (i18nsite)

documentation

README

range_merge

use std::ops::Range;

pub fn merge<S: AsRef<str>>(
  txt: impl AsRef<str>,
  range_li: impl AsRef<[Range<usize>]>,
  replace_li: impl AsRef<[S]>,
) -> String {
  let txt = txt.as_ref();
  let mut r = vec![];
  let mut pre = 0;
  for (range, traned) in range_li.as_ref().iter().zip(replace_li.as_ref()) {
    if range.start != pre {
      r.push(&txt[pre..range.start]);
    }
    r.push(traned.as_ref());
    pre = range.end;
  }
  if pre != txt.len() {
    r.push(&txt[pre..]);
  }
  r.join("")
}

About

This project is an open-source component of i18n.site ⋅ Internationalization Solution.

关于

本项目为 i18n.site ⋅ 国际化解决方案 的开源组件。

Commit count: 68

cargo fmt