Помогите создать сниппет для получения хештегов для соцок

backoff

Client
Регистрация
20.04.2015
Сообщения
5 914
Благодарностей
6 381
Баллы
113
Интересная задачка для тех кто пишет сниппеты.
Итак.
Имеем фразу

Код:
The right start of the day
Код:
The poor man is not the one who has not a penny in his pocket, but the one who does not have a dream
надо получить следующее
Код:
#right #start #day
Код:
#poor #man #one #who #penny #pocket #does #have #dream
То есть как я вижу это, может у вас будет лучше идея, то делитесь
  1. разделяем фразу на слова
  2. удаляем все предлоги типа the / of / is и тп
  3. к словам прибавляем знак хеш
  4. удаляем дубли

Как такое реализовать? Помогите
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 941
Благодарностей
4 331
Баллы
113

backoff

Client
Регистрация
20.04.2015
Сообщения
5 914
Благодарностей
6 381
Баллы
113

vrska

Client
Регистрация
07.02.2010
Сообщения
589
Благодарностей
406
Баллы
63
Замени пробел на пробел#
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 941
Благодарностей
4 331
Баллы
113
PHP:
return String.Join(" ", "The poor man is not the one who has not a penny in his pocket, but the one who does not have a dream".Replace("The","").Replace(" the"," ").Replace(", "," ").Replace(" but"," ").Replace(" a"," ").Replace(" is"," ").Replace(" in"," ").Split(' ').Distinct().ToArray()).Replace(" ", " #");
 

backoff

Client
Регистрация
20.04.2015
Сообщения
5 914
Благодарностей
6 381
Баллы
113
сделай плиз чтоб сниппет брал слова на удаление из списка
а то добавлять новые, адово
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 941
Благодарностей
4 331
Баллы
113
Ну это уже не то...
PHP:
string input = "The poor man is not the one who has not a penny in his pocket, but the one who does not have a dream";
var list = project.Lists["words"];
for (int i = 0; i < list.Count; i++) {
input = Regex.Replace(input, list[i], RegexOptions.IgnoreCase);
}
return String.Join(" ", input.Split(' ').Distinct().ToArray()).Replace(" ", " #").Trim();
И нужно решить другие возможные проблемы, добавить лимиты и т. д.
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 211
Благодарностей
793
Баллы
113
Код:
var list = project.Lists["ss"];
foreach(string s in list)
    project.Variables["inpuststr"].Value = project.Variables["inpuststr"].Value.ToLower().Replace(s,"");
project.Variables["inpuststr"].Value = project.Variables["inpuststr"].Value.Replace("  ", " ").Replace(".", "").Replace(",", "").Replace(" ", "#");
add
Вариант Astraport вроде получше:-)
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
Код:
    string phrase = "The poor man is not the one who has not a penny in his pocket, but the one who does not have a dream";
    string[] blacklist =                     
    {                     
        "a", "an", "on", "of", "or", "as", "i", "in", "is", "to",                     
        "the", "and", "for", "with", "not", "by", "it", "this", "at"                 
    };
    phrase = Regex.Replace(phrase, @"[^0-9A-Za-z\s]", "");
    return phrase.ToLower().Split(' ').Distinct().Where(x => !blacklist.Contains(x)).Aggregate( "", (c, n) => c + " #" + n);
 
  • Спасибо
Реакции: Astraport

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 941
Благодарностей
4 331
Баллы
113
Код:
    string phrase = "The poor man is not the one who has not a penny in his pocket, but the one who does not have a dream";
    string[] blacklist =                    
    {                    
        "a", "an", "on", "of", "or", "as", "i", "in", "is", "to",                    
        "the", "and", "for", "with", "not", "by", "it", "this", "at"                
    };
    phrase = Regex.Replace(phrase, @"[^0-9A-Za-z\s]", "");
    return phrase.ToLower().Split(' ').Distinct().Where(x => !blacklist.Contains(x)).Aggregate( "", (c, n) => c + " #" + n);
А как можно задать лимит, скажем в 5 тегов?
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
  • Спасибо
Реакции: auva и Astraport

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)