我正在寻找使用 String.split 方法来拆分 ':' 字符上的字符串。然而,问题是分裂也在诸如时间之类的事情上分裂。我不希望这种情况发生。无论如何我可以指定一个谓词,只有当它为真时,字符串才应该被拆分。
理想情况下,我只希望在搜索字符两侧的字符不是数字时拆分字符串?
编辑:
示例输入:
发布:08/02/1922 描述:示例描述时间:03:43
期望的输出:
[“已发布”、“08/02/1922 说明”、“示例说明时间”、“03:43”]
我正在寻找使用 String.split 方法来拆分 ':' 字符上的字符串。然而,问题是分裂也在诸如时间之类的事情上分裂。我不希望这种情况发生。无论如何我可以指定一个谓词,只有当它为真时,字符串才应该被拆分。
理想情况下,我只希望在搜索字符两侧的字符不是数字时拆分字符串?
编辑:
示例输入:
发布:08/02/1922 描述:示例描述时间:03:43
期望的输出:
[“已发布”、“08/02/1922 说明”、“示例说明时间”、“03:43”]
您可以Regex
为此目的使用:
var output = Regex.Split(input,"(?<!\\d\\s*)\\s*:\\s*|\\s*:\\s*(?!\\s*\\d)");
//Example:
string input = "a:b:c:12:00:00";
//Output
a
b
c
12:00:00
对于给定的示例,只需用“:”(逗号后跟空格)分隔即可完成工作。根据您的数据格式,它可能对您来说已经足够了。
使用正则表达式找出您的字符串类型,然后在它与您的 cretirea 匹配时进行拆分。像下面的东西
Regex r = new Regex(".[0-9]:.[0-9]", RegexOptions.IgnoreCase);
string s = "00:46";
Match m = r.Match(s);
string[] str = !m.Success ? s.Split(':') : null;