从 String Rust 中删除表情符号

Xtr*_*evX 3 rust emoji

我如何从像这样的字符串中删除表情符号"\xe2\x9a\xa1hel\xe2\x9c\x85lo"

\n

我知道您需要使用Regex一些其他东西,但我不确定如何编写语法并替换string.

\n

谢谢,非常感谢您的帮助。

\n

Xtr*_*evX 5

所以我花了一些时间来弄清楚,但这就是解决方案

\n
/// Removes all emojis from a string **(retains chinese characters)**\n///\n/// # Arguments\n///\n/// * `string` - String with emojis\n///\n/// # Returns\n///\n/// * `String` - De-emojified string\n///\n/// # Examples\n///\n/// ```\n///\n/// // Remove all emojis from this string\n/// let demojified_string = demoji(String::from("\xe2\x9a\xa1hel\xe2\x9c\x85lo"))\n/// // Output: `hello`\n/// ```\npub fn demoji(string: String) -> String {\n    let regex = Regex::new(concat!(\n        "[",\n        "\\u{01F600}-\\u{01F64F}", // emoticons\n        "\\u{01F300}-\\u{01F5FF}", // symbols & pictographs\n        "\\u{01F680}-\\u{01F6FF}", // transport & map symbols\n        "\\u{01F1E0}-\\u{01F1FF}", // flags (iOS)\n        "\\u{002702}-\\u{0027B0}",\n        "\\u{0024C2}-\\u{01F251}",\n        "]+",\n    ))\n    .unwrap();\n\n    regex.replace_all(&string, "").to_string()\n}\n
Run Code Online (Sandbox Code Playgroud)\n

  • 关于编写文档示例的小技巧。不要写 `"// Output: 'hello'"`,而是写 `assert_eq!(demojified, "hello");` 并且它兼作单元测试! (3认同)
  • 我还建议遵循 Sven Marnach 的提问和建议路线,因为这看起来非常糟糕,而且很容易陷入困境。 (2认同)