C# 需要从C中的字符串中提取字段

C# 需要从C中的字符串中提取字段,c#,string,operation,C#,String,Operation,我已经从字符串中提取了3个可用字段。没有公共分隔符,可以有空格和制表符 首先,我要做的是用“**”替换所有的双空格和制表符 给定字符串: cont=Gallipelle 04/04/2012 16.03.03 5678 我正在使用: 继续更换,***更换,***更换,***更换,***更换***装饰件 答案是: ******加里佩尔2012年4月4日16.03.03***************************************************5678***** 方法正确吗

我已经从字符串中提取了3个可用字段。没有公共分隔符,可以有空格和制表符

首先,我要做的是用“**”替换所有的双空格和制表符

给定字符串:

cont=Gallipelle 04/04/2012 16.03.03 5678

我正在使用:

继续更换,***更换,***更换,***更换,***更换***装饰件

答案是:

******加里佩尔2012年4月4日16.03.03***************************************************5678*****

方法正确吗?我如何从这里提取这些东西?我只需要字符串数据类型中的所有摘录。

只需使用:

添加StringSplitOptions.RemoveEmptyEntries可确保在提取结果时,如果有多个连续的选项卡和/或空格,则它们将计为一个

另一种选择是使用正则表达式。

只需使用:

(new Regex("\\s+")).Split(yourstring)
添加StringSplitOptions.RemoveEmptyEntries可确保在提取结果时,如果有多个连续的选项卡和/或空格,则它们将计为一个

另一种选择是使用正则表达式

(new Regex("\\s+")).Split(yourstring)

不需要。不需要用任何其他分隔符替换它。您可以使用String的split函数并将“space”作为分隔符。e、 g.在VB.Net中:

作为字符串的尺寸值=cont.splitCChar


这将为您提供一个字符串数组,您可以访问该数组的值:value0、value1和value2。无需将其替换为任何其他分隔符。您可以使用String的split函数并将“space”作为分隔符。e、 g.在VB.Net中:

作为字符串的尺寸值=cont.splitCChar


这将为您提供一个字符串数组,您可以访问该数组的值:value0、value1和value2

您可以使用正则表达式组查找三个值name、date和number

组的定义是

这样你就可以写作了

            Regex regex = new Regex("(?<name>(\\S*))(\\s*)(?<date>((\\S*)\\s(\\S*)))(\\s*)(?<number>(\\d*))");
            Match match = regex.Match(yourString);
            if (match.Success)
            {
                string name = match.Groups["name"].Value;
                string date = match.Groups["date"].Value;
                string number = match.Groups["number"].Value;
            }
\s*匹配包含制表符的空格序列。 \S*匹配非空白字符序列。
\d*匹配数字序列。

您可以使用正则表达式组找出三个值名称、日期和数字

组的定义是

这样你就可以写作了

            Regex regex = new Regex("(?<name>(\\S*))(\\s*)(?<date>((\\S*)\\s(\\S*)))(\\s*)(?<number>(\\d*))");
            Match match = regex.Match(yourString);
            if (match.Success)
            {
                string name = match.Groups["name"].Value;
                string date = match.Groups["date"].Value;
                string number = match.Groups["number"].Value;
            }
\s*匹配包含制表符的空格序列。 \S*匹配非空白字符序列。

\d*匹配数字序列。

是否总是名称/日期/编号?是否有一个标记在源字符串中不会出现?是否总是名称/日期/编号?是否有一个标记在源字符串中不会出现?您忘记了选项卡;将其设为@[\s\t]+则正确。@NKCSS\s匹配任何空格字符,包括制表符。请参阅以获取参考。您忘记了选项卡;将其设为@[\s\t]+则正确。@NKCSS\s匹配任何空格字符,包括制表符。请参阅以获取参考。您没有将多空间/选项卡考虑在内。您没有将多空间/选项卡考虑在内。现在的问题是,如果第一列有空格,它将被拆分为两列…@user1351029:数据格式太弱,您无法解决此问题。真的没有解决办法。要么数据格式必须改进,要么你会被糟糕而脆弱的代码压得喘不过气来。现在的问题是,如果第一列有空格,它将被分成两列…@user1351029:数据格式太弱,无法让你解决这个问题。真的没有解决办法。要么数据格式必须改进,要么你将背负着糟糕而脆弱的代码。我必须用字符串处理数据。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。Nat Att BTEn周2012年4月4日16.03.03 5678“Nat Att BTEn周”分为三个部分。实际上,这只是第一个字符串。您可以用?[^\\d]*替换第一个组“name”,修复了,感谢您的帮助:Regex Regex=new Regex?\\d{2}[/]\\d{2}[/]\\d{4}\\s\\d{2}[.]\\d{2}[.]\\d{2}\\s*?\\d*;Match=regex.MatchtestText;如果match.Success{//nameAlm=match.Groups[name].Value.Trim;dataAlm=match.Groups[date].Value.Trim;numberam=match.Groups[number].Value.Trim;}nameAlm=testText.ReplacedataAlm.ReplacenumberAlm.Trim@洛德勒布:感谢您接受答案顺便问一下,您是否找到了与包含数字的名称匹配的解决方法?我必须使用字符串处理数据。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。Nat Att BTEn周2012年4月4日16.03.03 5678“Nat Att BTEn周”分为三个部分。实际上,这只是第一个字符串。您可以用?[^\\d]*替换第一个组“name”,修复了,感谢您的帮助:Regex Regex=new Regex?\\d{2}[/]\\d{2}[/]\\d{4}\\s\\d{2}[.]\\d{2}[.]\\d{2}\\s*?\\d*;Match=regex.MatchtestText;如果匹配,成功{
//nameAlm=match.Groups[name].Value.Trim;dataAlm=match.Groups[date].Value.Trim;numberAlm=match.Groups[number].Value.Trim;}nameAlm=testText.ReplacedataAlm.ReplacenumberAlm.Trim@洛德勒布:感谢您接受答案顺便问一下,您是否找到了任何解决方法来匹配包含数字的名称?