修剪字符串中的值并签入数据库

本文关键字:数据库 字符串 修剪 | 更新日期: 2023-09-27 18:27:28

我需要在c#中编写一个函数,该函数可以修剪字符串中的值,并且应该在数据库中检查它是否可用。

将字符串设为"test_test1_test2_test3"

我必须根据下划线拆分字符串上面的值。即初始值,我必须从上面的字符串中提取"test3",并在数据库中检查它是否可用。如果不可用,那么我必须使用test2_test3并检查数据库。如果不可用,那么我必须使用test1_test2_test3并检查db,直到它的值可用。

有人能帮我吗??

样本代码:

string name = "test_test1_test2_test3";
int strIndex = name.LastIndexOf('_');
string value = name >= 0 ? name.Substring(strIndex + 1) : "" ; 
if(checkValue(value)){

}else{
    // Now i have to repeat the above process and take the next part of string and check for its availablity in db .
    // i.e for test2_test3
}

修剪字符串中的值并签入数据库

您可以Split字符串,并在array中循环,并将要匹配的字符串中的值附加到数据库中。

string name = "test_test1_test2_test3";
string[] arr = name.Split('_');
string strToMatch = string.Empty;
for (int i = arr.Length -1; i >= 0; i--)
{
   if (i != arr.Length - 1)
       strToMatch = arr[i] + "_" + strToMatch;
   else
       strToMatch = arr[i];
}

您可以在构建字符串类的Split方法时使用。这个方法是根据一个特定的字符(在您的情况下是下划线"_")拆分字符串,并创建一个字符串数组。此外,您可以迭代这个字符串数组,并在那里实现您的逻辑。

例如

string name = "test_test1_test2_test3";
var stringArray = name.Split('_');
foreach (var item in stringArray)
{
   //Call to DB, for checking string exists or not
   If (StringExists)
   {
      break;
   }  
}

这是我的答案,它被很好地划分为几个函数

    private void functionX()
    {
        string name = "test_test1_test2_test3";
        string[] splitValues = name.Split('_');
        bool notIndDB = false;
        int startIndex = splitValues.Length;
        while (!notIndDB && startIndex >= 0)
        {
            notIndDB = Check(BuildString(startIndex--, splitValues));                
        }
    }
    private string BuildString(int startIndex, string[] splitValues)
    {
        StringBuilder builder = new StringBuilder();
        for (int i = startIndex; i <= splitValues.Length -1; i++)
        {
            builder.Append((i != splitValues.Length -1 ? splitValues[i] + "_" : splitValues[i]));
        }
        return builder.ToString();
    }
    private bool Check(string parameter)
    {
        bool isFound = false;
        //Check if string is in db
        return isFound;
    }

您可以通过下一步获得所有可能变体的list

var str = "test_test1_test2_test3";
var arr = str.Split('_').ToList();
var list = new List<string> { str };
while (arr.Count > 1)
{
     arr.RemoveAt(0);
    list.Add(string.Join("_", arr));
}

我建议在一个查询中检查所有这些。

        string name = "test_test1_test2_test3";
        int pos = name.LastIndexOf("_");
        while (pos > -1)
        {
            string test_string = name.Substring(pos + 1);
            Console.WriteLine(test_string);
            pos = name.LastIndexOf("_", pos - 1);
        }