修剪字符串中的值并签入数据库
本文关键字:数据库 字符串 修剪 | 更新日期: 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);
}