所以我有以下字符串和数组字符串
示例1
string str = "name1, something2,else , any,thing";
string[] strArray = {"name1" , "something2,else" , "any,thing"};
示例2
string str = "A,B,C,D,E,F,G"
string [] strArray = {"A,B" , "C", "D,E", "F,G","I,J,K","L,M","H,N"}
string[] outputArray = {"A,B" , "C", "D,E", "F,G"}
那么如何将str与strArray进行比较以正确拆分呢?
请注意,strArray不是输出,但它是一个输入数组,有助于理解字符串str的分割。
答案 0 :(得分:0)
您可以通过正则表达式进行拆分:
string[] strArray = Regex.Split(str, @",(?!\d)");
// Captures "name1", "name2,2" and "name3"
含义:
捕获逗号,下一个字符不是数字。
答案 1 :(得分:0)
您可以使用将在空格上拆分的通用拆分,然后您可以使用Trim删除不需要的逗号,如下所示。
static void Main(string[] args)
{
char[] trimchar = {','};
string str = "name1, name2,2 ,name3";
var result = str.Split();
for (int i = 0; i < result.Length; i++)
{
result[i] = result[i].Trim(trimchar);
}
string[] strArray = { "name1", "name2,2", "name3" };
}
或者正如Simon建议你可以将逗号和空格的组合拆分成这样的东西。
static void Main(string[] args)
{
string[] trimChars = { " ,", ", " }; //Note leading and trailing commas
string str = "name1, name2,2 ,name3,new";
string[] strArray = { "name1", "name2,2", "name3" };
}
根据OP关于使用strArray检查有效项目的最后评论进行编辑。使用String.Compare并将结果放入List<String>
这样做更容易,而不是因为不知道项目数而重新调整数组。
static void Main(string[] args)
{
string str = "A,B,C,D,E,F,G";
string[] strArray = { "A,B", "C", "D,E", "F,G", "I,J,K", "L,M", "H,N" };
List<string> results = new List<string>();
foreach (var item in strArray)
{
if (str.Contains(item))
{
results.Add(item);
}
}
}