flv_util/
string_helper.rs1pub fn upper_cammel_case_to_sentence(src: String, remove_first: bool) -> String {
7 let mut letters: Vec<_> = vec![];
9 for c in src.chars() {
10 if c.is_uppercase() {
11 if !letters.is_empty() {
12 letters.push(' ');
13 }
14 if let Some(lowercase) = c.to_lowercase().to_string().chars().next() {
15 letters.push(lowercase);
16 }
17 } else {
18 letters.push(c);
19 }
20 }
21 let sentence: String = letters.into_iter().collect();
22
23 if remove_first {
25 let mut words: Vec<_> = sentence.split_whitespace().collect();
26 words.drain(0..1);
27 words.join(" ")
28 } else {
29 sentence
30 }
31}
32
33#[cfg(test)]
38pub mod test {
39 use super::*;
40
41 #[test]
42 fn test_upper_cammel_case_to_sentence() {
43 assert_eq!(
44 upper_cammel_case_to_sentence("ThisIsATest".to_owned(), false),
45 "this is a test"
46 );
47
48 assert_eq!(
49 upper_cammel_case_to_sentence("ThisIsATest".to_owned(), true),
50 "is a test"
51 );
52
53 assert_eq!(
54 upper_cammel_case_to_sentence("TopicAlreadyExists".to_owned(), true),
55 "already exists"
56 );
57
58 assert_eq!(
59 upper_cammel_case_to_sentence("UnknownTopicOrPartition".to_owned(), false),
60 "unknown topic or partition"
61 );
62
63 }
64}