Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2017, 18:15   #1
IzIFRag
Пользователь
 
Аватар для IzIFRag
 
Регистрация: 05.05.2010
Сообщений: 15
По умолчанию Функция принимающая два аргумента - массив строк и возвращающая массив целых чисел

Добрый день!
Нужно реализовать функцию принимающую два аргумента - массивы строк и возвращающая массив целых чисел
Код:
 public static int[] kolvo(string[] mas1, string[] mas2) { }
Массивы строк содержат какие то слова. Если слово из массива mas1 содержится в mas2 то его индекс не должен добавиться в массив возвращаемый функцией.
Например, если
Код:
string[] mas1 = { "year", "meter", "dog" "cat", "window" };
string[] mas2 = { "tea", "coffe", "pirat","meter" };
На выходе возврат функции должен дать
Код:
[0,2,3,4]
Так как meter есть и там и там...
Не пойму как правильно сравнивать массивы поэлементно, просто в цикле ?
но если такого нет(что и нужно), то как прибавить тогда индекс слова ( какой он есть в первом массиве mas1) в выходной массив ?
спасибо, я вроде понимаю, что не сложно, но ппц туплю
IzIFRag вне форума Ответить с цитированием
Старый 08.02.2017, 10:19   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у вас банальны цикл по первому массиву с поисков слова во втором(IndexOf)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.02.2017, 10:31   #3
KingMaster
 
Регистрация: 02.10.2009
Сообщений: 5
По умолчанию

Код:
var mas1 = new List<string> { "year", "meter", "dog", "cat", "window" };
var mas2 = new List<string> { "tea", "coffe", "pirat", "meter" };

var result = new List<int>();

for (var i = 0; i < mas1.Count(); i++)
{
    if (!mas2.Contains(mas1[i]))
    {
        result.Add(i);
    }
}
Я, конечно, не знаю вашей глобальной задачи, но если не так сильно нужны именно индексы, то всё решается гораздо проще:
Код:
var result = mas1.Except(mas2).ToList();
KingMaster вне форума Ответить с цитированием
Старый 08.02.2017, 11:02   #4
IzIFRag
Пользователь
 
Аватар для IzIFRag
 
Регистрация: 05.05.2010
Сообщений: 15
По умолчанию

Цитата:
Сообщение от KingMaster Посмотреть сообщение
Да, спасибо, так работает, а глобальная задача в том, чтобы он при сравнении слов проверял не сходство 1 в 1, а проверял, подходит ли это под регулярное выражение:
Код:
\w+(\.\w+)*
Спасибо.
IzIFRag вне форума Ответить с цитированием
Старый 08.02.2017, 11:22   #5
IzIFRag
Пользователь
 
Аватар для IzIFRag
 
Регистрация: 05.05.2010
Сообщений: 15
По умолчанию

Я так понимаю, просто проверка под этот шаблон
Код:
var mt = Regex.Match(mas1[i], @"\w+(\.\w+)*");
 if (mt.Success) list.Add(i);
Но мне нужно искать измененное mas1[i] с использование шаблона во всем mas2, как это сделать в документации к System.Text.RegularExpressions; пока не вижу (
IzIFRag вне форума Ответить с цитированием
Старый 08.02.2017, 12:18   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вложенный цикл просто.(ну или тем же LINQ можно, хотя суть та же)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.02.2017, 12:39   #7
IzIFRag
Пользователь
 
Аватар для IzIFRag
 
Регистрация: 05.05.2010
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
вложенный цикл просто.(ну или тем же LINQ можно, хотя суть та же)
Не понял совсем...
Вот то что получилось уже совсем близко:
Код:
string pattern = @"\w+(\.\w+)*";
string replacement = "$1:";
Console.WriteLine(mas[i]);
Console.WriteLine("Returned string: " + Regex.Replace(mas[i], pattern, replacement, RegexOptions.IgnoreCase));
Не понимаю что за параметр
Код:
replacement = "$1:";
Он режет все до проследней точки, т.е. от video.heroes.com оставляет только .com, а мне нужно чтобы оставлял heroes.com
IzIFRag вне форума Ответить с цитированием
Старый 08.02.2017, 13:37   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у вас регулярка так прописана.
$1 это замена на первую группу захвата.
https://regex101.com/r/N4xzpp/1
вам же видимо нужно что-то типа такого
https://regex101.com/r/exOPbw/1
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.02.2017, 13:48   #9
IzIFRag
Пользователь
 
Аватар для IzIFRag
 
Регистрация: 05.05.2010
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
у вас регулярка так прописана.
$1 это замена на первую группу захвата.
https://regex101.com/r/N4xzpp/1
вам же видимо нужно что-то типа такого
https://regex101.com/r/exOPbw/1
Так вот же... но само регулярное выражение - часть задания, поэтому я пытаюсь подобрать под него код..
типа есть список заблокированных доменов heroes.com, тогда все что заканчивается heroes.com тоже блокируется. т.е. image.heroes.com, super.video.image.com
IzIFRag вне форума Ответить с цитированием
Старый 08.02.2017, 16:02   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

для работы с Uri есть соотвествующий класс, он вам даст имя хоста.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция возвращает максимальное из 2 целых чисел, полученных в качестве аргумента C++ визуальный режим (есть код) carrie bradshaw Помощь студентам 3 30.01.2014 21:23
Задан массив целых чисел, который может содержать повторяющиеся члены. Вычислить сколько чисел входят в массив более чем по одному nubiknovo Паскаль, Turbo Pascal, PascalABC.NET 6 20.11.2013 00:50
Дан массив из N целых чисел. Получить из него массив чисел по модулю меньших 10 и отсортировать его(язык си++) mitja-zakelidis Помощь студентам 2 15.03.2012 03:10
Функция, возвращающая массив (С++) Alendorff Помощь студентам 14 09.03.2012 17:23
Функция возвращающая массив babaj Общие вопросы Delphi 8 04.07.2009 17:40