/// <summary> /// Удаляет гласные буквы из слова /// </summary> /// <param name="sInpWord">Входная строка (без пробелов)</param> /// <param name="intense">Интнсивность в процентах</param> /// <returns></returns> private string RemVowels(string sInpWord, int intense) { string res = ""; // Если интенсивность меньше 1, то не удаляем гласные if (intense < 1) { return(sInpWord); } if (sInpWord.Length < 3) { return(sInpWord); } // Переводим проценты в "каждый k-й" int everyK = 100 / intense; // Отбираем все буквы int cnt = 0; //foreach (char ch in sInpWord) for (int i = 0; i < sInpWord.Length; i++) { char ch = sInpWord[i]; if (SyllableParser.GetLetterType(ch) == LetterType.Consonant) { res += ch; } if (SyllableParser.GetLetterType(ch) == LetterType.Vowel) { cnt++; if (cnt % everyK != 0) { res += ch; } //если буква последння else if (i == sInpWord.Length - 1) { res += ch; } } if (SyllableParser.GetLetterType(ch) == LetterType.Unknown) { res += ch; } } // Сохраняем первую гласную if (SyllableParser.GetLetterType(sInpWord[0]) == LetterType.Vowel) { if (res[0] != sInpWord[0]) { res = sInpWord[0] + res; } } return(res); }
/// <summary> /// Сокращает слово /// </summary> /// <param name="sInpWord">Входная строка</param> /// <param name="maxSyll">Максимальное число слогов</param> /// <returns></returns> private string TrimWord(string sInpWord, int maxSyll, int syllsToHyphen) { string sOutWord = ""; if (sInpWord.Length < 3) { return(sInpWord); } string[] Syllables = SyllableParser.ParseAlt(sInpWord); if (Syllables.Length > syllsToHyphen) { return(Syllables[0] + Syllables[1][0] + '-' + Syllables.Last());//Test test test } else { for (int i = 0; i < Syllables.Length; i++) { sOutWord += Syllables[i]; if (i >= maxSyll - 1) { // Добавляем 1 согласную букву из следующего слога, if (Syllables.Length - 1 >= i + 1) // если он(слог) есть)))0) { sOutWord += Syllables[i + 1][0]; } // Удаляем все гласные в конце слова while (SyllableParser.GetLetterType(sOutWord.Last()) == LetterType.Vowel) { sOutWord = sOutWord.Remove(sOutWord.Length - 1, 1); } // Добавляенм точку, если сократили слово if (sOutWord.Length < sInpWord.Length) { sOutWord += '.'; } break; } } } return(sOutWord); }