C# 如何在一个字符串中输入一个单词和以下单词,并用空格分隔?

C# 如何在一个字符串中输入一个单词和以下单词,并用空格分隔?,c#,string,C#,String,在C#中,我有一个字符串如下: "nome varchar(20) NOT NULL DEFAULT NULL AUTO INCREMENT" 我必须首先搜索字符串是否包含如下默认值: string.Contains(“DEFAULT”)并且我要用空格分隔以下字符串 所以我需要得到这个: "DEFAULT NULL" 如何使用C#with framework 3.5实现这一点?简单易行: string text = "nome varchar(20) NOT NULL DEFAULT NUL

在C#中,我有一个字符串如下:

"nome varchar(20) NOT NULL DEFAULT NULL AUTO INCREMENT"
我必须首先搜索字符串是否包含如下默认值:
string.Contains(“DEFAULT”)
并且我要用空格分隔以下字符串 所以我需要得到这个:

"DEFAULT NULL"
如何使用C#with framework 3.5实现这一点?

简单易行:

string text = "nome varchar(20) NOT NULL DEFAULT NULL AUTO INCREMENT";
Match m = Regex.Match(text, @"DEFAULT\s+\S+");
if (m.Success)
{
    string output = m.Value;
}

Regexp可能更好,但为了完整起见,这里有一种方法是通过Linq和
string.Split()


注意:对于最后一个单词,它可能需要是
DEFAULT(\s+\w+)?
@marcGravel如果没有以下参数,就无法创建具有默认值的SQL。@Ulubek没有人说它必须是严格的SQL;p事实上,我可以用SQL中的默认值做很多与此不匹配的事情,例如
default('abc')
。这是在我们解开了
notnull
列的谜团之后,该列具有
NULL
默认值;p@MarcGravell是的,有很多方法可以打破这个;)关于
notnull
的精彩捕捉。
string test = "nome varchar(20) NOT NULL DEFAULT NULL AUTO INCREMENT";
string target = "DEFAULT";
string result = test.Split(' ').SkipWhile(item => item != target).Skip(1).FirstOrDefault();

if (result != null)
    Console.WriteLine("Match = " + target + " " + result);
else
    Console.WriteLine("No match found");