Найти и сохранить в строке те слова последовательности, которые отличны от первого слова - C# (181869)
Формулировка задачи:
помогите плиз, никак не получается
Дана строка. Словом текста считается любая последовательность букв латинского
алфавита; между соседними словами - не менее одного пробела, за последним словом -
точка. Найти и сохранить в строке те слова последовательности, которые отличны от
первого слова и удовлетворяют следующему свойству: слово совпадает с конечным
отрезком латинского алфавита (z, yz, xyz,...). Все остальные слова удалить
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication7
{
class Program
{
static void main(string stroka)
{
stroka = stroka.Trim(); // убираем пробелы в начале и конце строки
stroka = stroka.ToLower();
}
static string firstWordCompare(string[] N)
{
string stroka = N[0];
for (int i = 1; i < N.Length; i++) // организуем цикл для перебора элементов строки
{
if (N[0] == N[i])
{
N[i] = "";
}
else stroka = stroka + " " + N[i];
}
return stroka;
}
static string allWordCompare(string[] N) // задаем строковую функцию с параметром для преобразования строки
{
string stoka = "";
for (int i = 0; i < N.Length; i++) // организуем цикл для перебора элементов строки
{
char[] letter = N[i].ToCharArray();
if(N[i]!="")
{
if (letter[letter.Length-1] == 'z')
{ stoka += N[i]+ " "; }
}
}
return stoka;
}
static void Main(string[] args)
{
for (int i=65;i<=90;i++)
{
Console.WriteLine((char)i);
}
Console.WriteLine("Введите строку");
string stroka;
stroka = Console.ReadLine();
main(stroka);
string[] N = stroka.Split(' ');
stroka = firstWordCompare(N);
stroka = allWordCompare(N);
Console.WriteLine(stroka);
Console.ReadKey();
}
}
}Решение задачи: «Найти и сохранить в строке те слова последовательности, которые отличны от первого слова»
textual
Листинг программы
using System;
using System.Text.RegularExpressions;
namespace ConsoleApplication7 {
class Program {
static void Main( string[] args ) {
Console.WriteLine( "Введите строку" );
var result = GetValidString( Console.ReadLine() );
Console.WriteLine( "Результат: \n{0}", result );
Console.ReadKey();
}
static string GetValidString( string input ) {
input = input.Trim().ToLower();
var output = "";
// заменяем 2 и больше пробелов со строки на 1, если нужно
//input = Regex.Replace( input, " {2,}", "" );
// нашли все слова
var words = Regex.Matches( input, "\\w+", RegexOptions.IgnoreCase );
if( words.Count > 1 ) {
var firstWord = words[ 0 ].Value;
for( int i = 1; i < words.Count; i++ ) {
if( words[ 0 ].Value != words[ i ].Value && Regex.IsMatch( words[ i ].Value, "^(z|yz|xyz)$", RegexOptions.IgnoreCase ) ) {
output += words[ i ] + " ";
}
}
return output;
} else {
Console.WriteLine( "Нужно ввести больше 1 слова" );
return "";
}
}
}
}