172 похожих чатов

Не подскажите, как можно в строке находить (и заменять) эмоджи?

(включая те, которые из нескольких char состоят)

Т.е. мне нужно условное "ахаха 👍😳😘" превратить в "ахаха abc"

Я так понимаю что руками костылить нереально в данном случае

19 ответов

53 просмотра

ну нужно на кодпоинты разбить и найти либу которая умеет проверять что is_emoji

еще смотри, эмодзи 👨‍👨‍👧‍👧 модержит четыре эмодзи и три специальных знака между ними:👨👩👧👧 что в этом случае нужно делать?

в общем на тебе крейт https://docs.rs/unic-emoji-char/0.9.0/unic_emoji_char/index.html который может для char определить эмодзи это или нет если тебе нужно именно полные глифы разбирать, то ищи сам, это мрак

вафель-🧇🍓 Автор вопроса
вафель 🧇🍓
заменять все как один

Тогда могу только посочувствовать. Только что прогуглил два раза, ничего не нашел, все предлагают писать рукописные решения))

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

вафель 🧇🍓
Спасибо!

правда я не все ренжи скопировал. Отвлекли по работе) Но смысл такой же. Пожалуйста

Αλεχ Zhukovsky
ну что за глупые вопросы? :D https://stackoverflow...

о, свифт норм язык https://developer.apple.com/documentation/swift/unicode/scalar/properties/3081577-isemoji

вафель-🧇🍓 Автор вопроса
Roma S
о, свифт норм язык https://developer.apple.com/doc...

> // 0 --> true немного не то что я бы хотел

Roma S
о, свифт норм язык https://developer.apple.com/doc...

щас бы о япе судить о тому кто сколько фунок в стд напихал :D Ну и 0 -> true это рофл конеш

Αλεχ Zhukovsky
щас бы о япе судить о тому кто сколько фунок в стд...

там ещё @escaping/@noescape тема прикольная. но то что решают насущные вопросы это тоже хорошо!

вафель-🧇🍓 Автор вопроса
Αλεχ Zhukovsky
use unicode_segmentation::UnicodeSegmentation; use...

Это с 3️⃣ не работает :/ Вот и пришло время обновлять код хд

вафель-🧇🍓 Автор вопроса
red75prime
https://t.me/rustlang_ru/346028

я скопировал остальные тоже

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта