我是编程新手,我在完成以下任务时遇到了困难。
我有一个字符串让我们说string final_word="Bacliff New Texas United States";
,我想做以下事情:
首先检查数据库中的整个字符串,如果存在匹配,如果没有,我就可以了
我想搜索子串"Bacliff New Texas United"
。
如果找到匹配项,我将搜索子字符串"States"
,否则我将搜索子字符串"New Texas United States"
,如果找到匹配项,则搜索子字符串"Bacliff"
如果不是,则搜索子字符串"Bacliff New Texas"
。如果找到匹配项,则搜索子字符串"United States"
,如果找不到匹配字符串"United"
的最后一个子字符串搜索的匹配项, "States"
。
否则搜索子串"New Texas United"
,现在如果找到匹配,我将在数据库中搜索两个单独的子串"Bacliff"
和"States"
,因为我希望所有子串都是顺序的原始字符串中的单词。我将继续以同样的方式看待。如果找不到两个单词的每个组合的匹配,我将搜索每个单词。
简而言之,
首先我必须搜索整个字符串
其次,搜索包含5个单词的子字符串,但保留其他字符串,以防第一个子字符串找到匹配项。
第三,搜索连续4个单词的sunstrings,并保留其他单词的原始位置。
接下来搜索带有3个连续词等的子串。
最后搜索每个单词。
如果在任何时候找到任何单词组合的匹配,我会存储这个单词并继续以相同的方式查找其他组合..
我希望我明白我的观点...... 任何帮助都会得到真正的赞赏....
提前谢谢.........
答案 0 :(得分:1)
如果您使用的是Ms SQL,那么最好使用全文搜索
答案 1 :(得分:1)
您可以将输入字符串拆分为数组,然后重新连接连续字的子数组:
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));
}
}
}
}
修改强>:
对不起,我不是百分百确定我是否理解你想要的东西:)
这更像是吗?
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));
}
}
}
}