Рейтинг:
4
Karthik_Mahalingam
попробовать это
static void Main(string[] args)
{
string[] myArray = { "Can", "you", "help me", "please", "?", "thank", "you", "very much", "." };
ReplaceWithNON(myArray);
}
private static void ReplaceWithNON(string[] myArray)
{
string[] patterns = { "the", "that", "(eg width)", "123", ".", "text", "for example", "help me", "very much" };
for (int i = 0; i < myArray.Length; i++)
{
if (patterns.Contains(myArray[i]))
myArray[i] = "NON";
}
}
Member 11276287
спасибо Вам за ваше решение, но ваш код не работает корректно для некоторых массивов str, таких как str[0]!
Karthik_Mahalingam
Вы должны разделить "например" как "для", "пример" в массиве шаблонов
Member 11276287
Нет,я не могу их разделить. Я должен предположить массив str[i] как одну строку и найти совпадающие подстроки с массивом patterns, а затем заменить их на "NON" (в str[i])
Karthik_Mahalingam
попробовать это
static void Main (string[] args)
{
строка[] с myarray = { "это", "является", "простой", "текст", "для", "пример", "!" };
// string[] myArray = {"Can"," you"," help me"," please","?"," thank"," you"," very much","." };
ReplaceWithNON(myarray, к);
}
частных статических недействительным ReplaceWithNON(строка[] myarray, к)
{
string[] patterns = {"the", "that", "(например, width)", "123", ".", "текст", "например", "помогите мне", " очень много" };
List & lt;string & gt; temp = новый список & lt;string>();
foreach (string pattern in patterns)
{
темп.Добавить(рисунок);
temp. AddRange(pattern. Split(new char [] { '' }, StringSplitOptions.RemoveEmptyEntries));
}
ВАР allPatterns = темп.Различны().Список();
for (int i = 0; i < myArray.Длина; i++)
{
если (allPatterns.Содержит(myArray[i]))
myArray[i] = " NON";
}
}
Member 11276287
Спасибо, он работает правильно.
Karthik_Mahalingam
крутой,
:)
Member 11276287
Мне очень жаль, что я продолжаю комментировать. Не могли бы вы помочь мне отредактировать ваши коды ,чтобы решить следующий пример, пожалуйста?
если мы предположим:
строка[] с myarray ={ "как", "много", "есть", "для", "пример", "по","тестирование","ваш","решение","." };
с ваших кодов, выход:
myArray = {"как", "не", "есть", "НЕ", "НЕ", "НЕ", "тестирование", "ваше", "решение", " не" };
но желаемый результат таков:
myArray = {"How", "much", "is", "NON", "NON", "for", "testing", "your", "solution", " NON" };
Karthik_Mahalingam
но это нарушит парадигму для первого случая.
вы должны будете предоставить правильный тестовый случай как для входных данных, так и для будущих случаев, чтобы мы могли проанализировать и сделать алгоритм ... иначе это будет беспорядок..
Member 11276287
Моя проблема заключается в следующем: у нас есть строка, которая разбита на множество токенов(например, myArray).желаемая цель состоит в том, чтобы найти все специальные подстроки(например, паттерны)и заменить их на "не". каждая подстрока/паттерн имеют связанные токены, но они могут быть отдельными токенами в myArray, и порядок важен.Я не знаю, как решить эту проблему!
Karthik_Mahalingam
предоставьте некоторый пример входных данных и ожидаемый результат логически..
Member 11276287
логически?
string[] input0={"a", "bc", "de fg", "h", "i", "j", "i", "i j", "kl", "m", "nop", "q rs","tu", "v", "wxy z", " wz"};
string[] patterns={"a m", "bc", "de", "h i j", "k", "rs", "tu v", "z", " wz"};
ожидаемый результат:
input0={"а","нон","де-ФГ","номера","номера","номера","я","мой J","КЛ","м","НОП","М РС","номера","номера","wxy и Z"."Номера"};
Karthik_Mahalingam
ладно подожди
я все проанализирую и вернусь..
Member 11276287
Большое вам спасибо за ваше внимание и ваши усилия.
Karthik_Mahalingam
почему "ч","я","Джей преобразуется в "номера","номера","номера"
и следующее " Я " превращается в "я"
какая логика стоит за этим?
Member 11276287
нам разрешено объединять последовательные элементы входного массива для построения шаблона с использованием пространства. например
паттерны[3]= "h i j" =слияние (input0[3],"", input0[4],"", input0[5]). обратите внимание- - - - - > 3,4,5
но мы не позволяем разбивать паттерн (обратный для паттерна).таким образом, у нас нет паттернов[j]="i".
некоторые из правил таковы:
если input0[я]="ул."&амп; шаблоны[Дж]="улица" тогда input0[я]="не"
если input0[я]="str1 выглядит следующим образом"&амп;input0[я+1]="стр2" &амп; шаблоны[Дж]="строка str2 str1 выглядит следующим образом:" тогда input0[я]=input0[я+1]="не"
если input0[я]="str1 выглядит следующим образом"&амп;input0[я+1]="стр2"&амп;...&ампер;input0[я+н]="стрн" &амп; шаблоны[Дж]="str1 выглядит следующим образом стр2 ... стрн" тогда input0[я]=input0[я+1]=...=input0[я+н]="не"
если input0[я]="str1 выглядит следующим образом"&амп; input0[я+1] !="стр2"&амп; шаблоны[Дж]="строка str2 str1 выглядит следующим образом:" тогда input0[я]="str1 выглядит следующим образом"&амп; вход[я+1]="стр2"
Karthik_Mahalingam
static void Main (string[] args)
{
string[] input0 = { "a", "bc", "de fg", "h", "i", "j", "i", "i j", "kl", "m", "nop", "q rs"," tu", "v", "wxy z", " wz" };
ReplaceWithNON(input0);
}
частных статических недействительным ReplaceWithNON(строка[] myarray, к)
{
string[] myArray1 = myArray.Вызова метода toList().Метод toArray();
string[] patterns = { "a m", "bc", "de", "h i j", "k", "rs", "tu v", "z", " wz" };
foreach (строковый элемент в шаблонах)
{
string[] temp = item. Split(new char [] { '' }, StringSplitOptions.RemoveEmptyEntries);
var length = temp.Длина;
если (длина > 1)
{
for (int i = 0; i < myArray.Длина; i++)
{
строка = строка.Присоединиться(" ", с myarray.Пропустить(я).Взять(длина).Список());
if (a = = item)
{
для (Int J В = я; к &ЛТ; я + длина; J++в)
{
myArray1[j] = " NON";
}
перерыв;
}
}
}
for (int i = 0; i < myArray.Длина; i++)
если (паттерны.Содержит(myArray[i]))
myArray1[i] = " NON";
for (int i = 0; i < myArray1.Длина; i++)
myArray[i] = myArray1[i];
}
}
Karthik_Mahalingam
попробуйте использовать приведенный выше код
Member 11276287
ok.it работайте правильно.
Большое вам спасибо за ваши самоотверженные усилия, и я ценю ваше время. удачи!
Karthik_Mahalingam
крутой