(включая те, которые из нескольких char состоят)
Т.е. мне нужно условное "ахаха 👍😳😘" превратить в "ахаха abc"
Я так понимаю что руками костылить нереально в данном случае
ну нужно на кодпоинты разбить и найти либу которая умеет проверять что is_emoji
еще смотри, эмодзи 👨👨👧👧 модержит четыре эмодзи и три специальных знака между ними:👨👩👧👧 что в этом случае нужно делать?
в общем на тебе крейт https://docs.rs/unic-emoji-char/0.9.0/unic_emoji_char/index.html который может для char определить эмодзи это или нет если тебе нужно именно полные глифы разбирать, то ищи сам, это мрак
ну этого ещё недостаточно из-за multichar emoji
заменять все как один
Тогда могу только посочувствовать. Только что прогуглил два раза, ничего не нашел, все предлагают писать рукописные решения))
use unicode_segmentation::UnicodeSegmentation; use std::borrow::Cow; fn replace_emoji<'a, F: FnMut(&'a str) -> Cow<'a, str>>(string: &'a str, mut f: F) -> String { string.graphemes(true) .map(|g| match g.chars().next().map(|c| c as u32) { | Some(0x1D000..=0x1F77F) | Some(0xFE00..=0xFE0F) | Some(0x1F900..=0x1F9FF) | Some(0x3030) | Some(0x00AE) | Some(0x00A9) | Some(0x2100..=0x27BF) => f(g), _ => Cow::Borrowed(g) }) .collect::<String>() } fn main() { let string = "ахаха 👍😳😘 👨👨👧👧"; println!("{}", string); let mut i = 0; let sanitazed = replace_emoji(string, |_| { let result: char = unsafe { std::mem::transmute('a' as u32 + i) }; i += 1; Cow::Owned(format!("{}", result)) }); println!("{}", sanitazed); }
А откуда ренджи?
ну что за глупые вопросы? :D https://stackoverflow.com/a/36258684/2559709
правда я не все ренжи скопировал. Отвлекли по работе) Но смысл такой же. Пожалуйста
о, свифт норм язык https://developer.apple.com/documentation/swift/unicode/scalar/properties/3081577-isemoji
> // 0 --> true немного не то что я бы хотел
щас бы о япе судить о тому кто сколько фунок в стд напихал :D Ну и 0 -> true это рофл конеш
там ещё @escaping/@noescape тема прикольная. но то что решают насущные вопросы это тоже хорошо!
Это с 3️⃣ не работает :/ Вот и пришло время обновлять код хд
https://t.me/rustlang_ru/346028
я скопировал остальные тоже
Обсуждают сегодня