получить всю комбинацию последовательных элементов массива строк, сохраняя при этом остальные элементы С#

Я новичок в программировании, и мне сложно решить следующую задачу.

У меня есть строка, скажем, string final_word="Bacliff New Texas United States";, и я хочу сделать следующее:

1-я проверка всей строки в базе данных, если совпадение существует, я в порядке, если нет, я хочу найти подстроку "Bacliff New Texas United".

Если совпадение найдено, я буду искать подстроку "States", если нет, я буду искать подстроку "New Texas United States", если совпадение найдено, искать подстроку "Bacliff".

Если нет, ищите подстроку "Bacliff New Texas". Если совпадение найдено, ищите подстроку "United States", а если совпадений для последней подстроки не найдено, ищите подстроки "United" и "States".

В противном случае найдите подстроку "New Texas United", теперь, если совпадение найдено, я буду искать в базе данных две отдельные подстроки "Bacliff" и "States", потому что я хочу, чтобы все подстроки были последовательными словами в исходной строке. и я буду продолжать искать в том же направлении. Если для каждой комбинации двух слов не найдено совпадений, я буду искать каждое слово отдельно.

Короче говоря,

Сначала мне нужно найти всю строку

Во-вторых, ищите подстроку из 5 слов, но сохраняйте остальные на случай, если будет найдено совпадение для первой подстроки.

В-третьих, ищите солнечные строки с 4 последовательными словами и сохраняйте остальные по отношению к исходному положению.

Следующий поиск подстрок с 3 последовательными словами и т.д..

Наконец, найдите каждое отдельное слово.

если в какой-то момент будет найдено совпадение для какой-либо комбинации слов, я сохраню это слово и продолжу таким же образом искать другие комбинации.

Я надеюсь, что я ясно изложил свою точку зрения.. любая помощь будет действительно оценена....

Заранее спасибо.........


person katerina    schedule 02.02.2011    source источник
comment
какую базу данных вы используете?   -  person Shekhar_Pro    schedule 02.02.2011


Ответы (2)


Вы можете разделить входную строку на массив, а затем снова присоединиться к подмассивам последовательных слов:

using System;

class Program {
    static void Main(string[] args) {
        string full = "Bacliff New Texas United States";
        // split the string in words
        string[] words = full.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
        // get substrings 'size' words long
        for (int size = 1; size <= words.Length; ++size) {
            string[] destination = new string[size];
            for (int start = 0; start <= words.Length - size; ++start) {
                Array.Copy(words, start, destination, 0, size);
                Console.WriteLine(string.Join(" ", destination));
            }
        }
    }
}

ИЗМЕНИТЬ:

Извините, я не уверен на 100%, правильно ли я понял, что вы хотите :)
Это больше похоже на это?

using System;

class Program {
    static void Main(string[] args) {
        string full = "Bacliff New Texas United States";
        // split the string in words
        string[] words = full.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
        for (int size = 1; size < words.Length; ++size) {
            // get substrings of 'size' words
            for (int start = 0; start <= words.Length - size; ++start) {
                string[] before = new string[start];
                string[] destination = new string[size];
                string[] after = new string[words.Length - (size + start)];
                Array.Copy(words, 0, before, 0, before.Length);
                Array.Copy(words, start, destination, 0, destination.Length);
                Array.Copy(words, start + destination.Length, after, 0, after.Length);
                Console.WriteLine("{0} % {1} % {2}",
                    string.Join(" ", before),
                    string.Join(" ", destination),
                    string.Join(" ", after));
            }
        }
    }
}
person Paolo Tedesco    schedule 02.02.2011
comment
спасибо .. эта функция предоставляет мне всю комбинацию, но есть ли у вас какие-либо идеи, где хранить оставшиеся подстроки??Например. если я найду совпадение для подстроки United States, я хочу проверить оставшуюся подстроку Bacliff New Texas, следуя тем же принципам.. - person katerina; 02.02.2011
comment
Смотрите отредактированный ответ ... Надеюсь, я правильно понял, о чем вы просите сейчас :) - person Paolo Tedesco; 02.02.2011
comment
что бы сделать !!!!!!!!!!!!!!!!!!!!!!!!спасибо вам большое за вашу помощь !!!!!!!!!!!!!!!!!!!! !!!теперь мне нужно выяснить лишь несколько деталей относительно условий существования цикла.. - person katerina; 02.02.2011
comment
@katerina: рада, что это помогает :) Если это полезно, пожалуйста, проголосуйте за него и / или отметьте его как принятый ответ. - person Paolo Tedesco; 02.02.2011
comment
@katerina: Я думаю, что вам нужна определенная репутация, чтобы голосовать за ответы, но не волнуйтесь :) Я указывала это только потому, что думала, что вы новый пользователь. - person Paolo Tedesco; 02.02.2011

если вы используете Ms SQL, то лучше используйте полнотекстовый поиск

person Shekhar_Pro    schedule 02.02.2011
comment
спасибо .. моя проблема не в том, как запросить базу данных, а в том, как я могу создать все эти подстроки .. - person katerina; 02.02.2011