微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从字符串的末尾迭代以在某个时间开始一个单词

如何解决从字符串的末尾迭代以在某个时间开始一个单词

我正在研究如何遍历一个带有单词的字符串,从结尾开始,逐字逐句地进行。

输出应该是这样的:

  • word1 word2 word3 word4
  • word1 word2 word3
  • word1 word2
  • word1

我现在真的不知道从哪里/如何开始。相反,我开始工作了,但事实证明这不是我需要的(见下文)。

string descriptionText = "Column Grid Building"; //example
string[] description1TextArray = descriptionText.Split(' ');
int noItems = description1TextArray.Count();

for (int i = 0; i < noItems; i++)
{
    if (i == 0)
    {
        search = search + description1TextArray[i];
    }
    else
    {
        search = search + " " + description1TextArray[i];
    }

   foreach (DaTarow row in dt.Rows)
    {
        description1 = row[0].ToString(); 
        abbreviation1 = row[1].ToString();

        if (description1 == search || abbreviation1 == search)
        {
            comboBoxDescription1.Selectedindex = comboBoxDescription1.FindStringExact(description1);
        }
    }
}

编辑:

抱歉给您带来任何混淆。

我以字符串“word1 word2 word3 word4”开头。我已经将每个单词设置为一个数组。

string[] description1TextArray = descriptionText.Split(' ');
int noItems = description1TextArray.Count();

我需要根据数据表中的值检查字符串。例如,dataTable 中的值是“Column Grid”。我的输入是“列网格构建”。

我需要从头到尾检查的原因是因为数据表中存在重叠的值,例如“Column Grid”和“Columnn”。当我从头到尾检查字符串时,永远找不到值“Column Grid”,因为在“Column”上已经找到匹配项。

我希望这能更好地解释它。

解决方法

你可以试试这个:

using System.Linq;

string myString = "word1 word2 word3 word4";

var words = myString.Split(' ');

for ( int index = words.Length; index > 0 ; index-- )
{
  string sentence = string.Join(" ",words.Take(index));
  Console.WriteLine(sentence);
}

这是一个循环,通过对索引器进行倒计时来获取所需的单词数。

输出

word1 word2 word3 word4
word1 word2 word3
word1 word2
word1
,

试试这个方法

string data = "word1 word2 word3 word4";
var strarray = data.Split(' ');
for ( int i = strarray.Length - 1; i >= 0; i-- )
{
  Console.WriteLine(strarray[i]);
}
,

即使在编辑之后这个问题也有点令人困惑...如果我理解正确的话,你的问题是你的数据库中有一些类似的字符串,例如你得到:

1)“列”

2)“列网格”

3)“列网格你好”

您收到字符串“Column grid hello world”作为输入,您需要测试此字符串与存储在数据库中的所有 3 个项目。 理论上所有 3 个字符串都与您的输入字符串匹配,但您想知道哪一个最相似?比如本例中的第三个“列磨你好”。

是吗?

如果这是问题并不像你想象的那么容易,因为被称为模糊(或近似)字符串匹配

无论如何,如果您 100% 确定您的输入字符串将始终是您的 db 中的字符串 + 其他内容,您可以尝试做不同的事情,因为我没有看到拆分成一组单词的意义.不能只使用 .Contains() 方法吗?

例如:

string inputString; // user input string
List<string> yourOrderedDbCollection; // dunno if you are using sql or linq,anyway just order by lenght ascending
string foundItem; // the final found item

foreach (string yourDbString in yourOrderedDbCollection) 
{
   if(inputString.Contains(yourDbString))
   {
    foundItem = yourDbString;
    break;
   }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。