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

时间:2012-04-23 10:17:37

标签: c# string operation

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

首先,我正在做的是用'**'替换所有双重空格和标签

给定字符串:

cont = Gallipelle 04/04/2012 16.03.03 5678

我正在使用:

cont.Replace(“”,“**”)。替换(“”,“**”)。替换(“”,“**”)。替换(“**”,“”).Trim ()

答案是:

****** Gallipelle ****** 04/04/2012 16.03.03 ************************ 5678 * ****

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

5 个答案:

答案 0 :(得分:3)

只需使用String.Split

var fields = cont.Split(new[] { " ", "\t" },
                        StringSplitOptions.RemoveEmptyEntries);

添加StringSplitOptions.RemoveEmptyEntries可确保在提取结果时,如果有多个连续的标签和/或空格,它们将“统计为一个”。

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

答案 1 :(得分:1)

您可以使用正则表达式组找出三个值name,date,number。

组被定义为(?< group_name>< regex_expr>)

所以你可以写

            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 *匹配数字序列。

答案 2 :(得分:0)

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

http://msdn.microsoft.com/en-us/library/8yttk7sy.aspx

答案 3 :(得分:0)

var myText="cont = Gallipelle 04/04/2012 16.03.03 5678";
var splitString=myText.split(" ");

// splitString[1] == Gallipelle 
// splitString[2] ==  04/04/2012
// splitString[3] == 16.03.03 
// splitString[4] == 5678

答案 4 :(得分:0)

没有。无需将其替换为任何其他分隔符。您可以使用String的split函数并将'space'作为分隔符。例如在VB.Net中:

Dim value As String()= cont.split(CChar(“”))

这将为您提供一个字符串数组,您可以访问其值:value(0),value(1)和value(2)