1

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

首先,我正在做的是将所有双空格和制表符替换为 '**'

给定字符串:

续 = Gallipelle 04/04/2012 16.03.03 5678

我在用:

cont.Replace(" ", "**").Replace(" ", "**").Replace(" ", "**").Replace("**", "").Trim()

答案变成:

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

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

4

5 回答 5

3

只需使用String.Split

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

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

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

于 2012-04-23T10:19:39.703 回答
1

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

组定义为 (?<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* 匹配数字序列。

于 2012-04-23T12:05:04.197 回答
0
(new Regex("\\s+")).Split(yourstring)

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

于 2012-04-23T10:19:48.223 回答
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
于 2012-04-23T10:21:08.020 回答
0

不。不需要用任何其他分隔符替换它。您可以使用字符串的拆分功能并将“空格”作为分隔符。例如在 VB.Net 中:

暗值 As String() = cont.split(CChar(" "))

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

于 2012-04-23T10:23:14.370 回答