mirror of
https://github.com/RustPython/RustPython.git
synced 2026-10-29 19:24:57 +08:00
common::str::get_chars with test
This commit is contained in:
1 parent
3bc7141564
commit
2d01cffbf9
3 files changed
+32
-10
No files matched your search
@@ -4,3 +4,4 @@ pub mod cell;
|
||||
pub mod float_ops;
|
||||
pub mod hash;
|
||||
pub mod rc;
|
||||
pub mod str;
|
||||
@@ -0,0 +1,30 @@
|
||||
pub fn get_chars(s: &str, range: std::ops::Range<usize>) -> &str {
|
||||
let mut chars = s.chars();
|
||||
for _ in 0..range.start {
|
||||
let _ = chars.next();
|
||||
}
|
||||
let start = chars.as_str();
|
||||
for _ in range {
|
||||
let _ = chars.next();
|
||||
}
|
||||
let end = chars.as_str();
|
||||
&start[..start.len() - end.len()]
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_get_chars() {
|
||||
let s = "0123456789";
|
||||
assert_eq!(get_chars(s, 3..7), "3456");
|
||||
assert_eq!(get_chars(s, 3..7), &s[3..7]);
|
||||
|
||||
let s = "0유니코드 문자열9";
|
||||
assert_eq!(get_chars(s, 3..7), "코드 문");
|
||||
|
||||
let s = "0😀😃😄😁😆😅😂🤣9";
|
||||
assert_eq!(get_chars(s, 3..7), "😄😁😆😅");
|
||||
}
|
||||
}
|
||||
+1
-10
@@ -1406,16 +1406,7 @@ impl<'s> PyCommonString<'s, char> for str {
|
||||
}
|
||||
|
||||
fn get_chars<'a>(&'a self, range: std::ops::Range<usize>) -> &'a Self {
|
||||
let mut chars = self.chars();
|
||||
for _ in 0..range.start {
|
||||
let _ = chars.next();
|
||||
}
|
||||
let start = chars.as_str();
|
||||
for _ in range {
|
||||
let _ = chars.next();
|
||||
}
|
||||
let end = chars.as_str();
|
||||
&start[..start.len() - end.len()]
|
||||
rustpython_common::str::get_chars(self, range)
|
||||
}
|
||||
|
||||
fn is_empty(&self) -> bool {
|
||||
|
||||
Reference in new issue
Block a user