需要帮忙劈开一根绳子
本文关键字:一根 | 更新日期: 2023-09-27 18:18:04
我需要拆分一个字符串,如:
1 kg sugar, 100 pound flour, 10 g salt, 1 1/4 cup of flour, 1,5 piece of stuff or 1.5 cup of water
应该返回如下内容:
["1 kg sugar", "100 pound flour", "10 g salt", "1 1/4 cup of flour", "1,5 piece of stuff", "1.5 cup of water"]
的模式可以有点时髦。但假设它总是以数字开头以字母结尾
替换所有
(, )|( or )
", "
在结果的开头添加["
,在结果的末尾添加"]
。
对c#一无所知,只是用RegexCoach测试了一下
不需要正则表达式。用逗号和空格分隔字符串
var input = "1 kg sugar, 100 pound flour, 10 g salt, 1 1/4 cup of flour, 1,5 piece of stuff or 1.5 cup of water";
var results = input.Split(new [] { ", " }, StringSplitOptions.None);
DotNetFiddle
结果:1 kg sugar
100 pound flour
10 g salt
1 1/4 cup of flour
1,5 piece of stuff or 1.5 cup of water
我相信我已经找到解决办法了。不确定这是否是最好的方式,但我正在使用正则表达式来提取所需的
string pattern = @"[0-9][0-9 /.,]+[a-zA-Z ]+";
string input = line;
var result = new List<string>();
foreach (Match m in Regex.Matches(input, pattern))
result.Add(m.Value.Trim());
return result;
这段代码返回我需要的内容,例如
new[] { "1 kg sugar", "100 pound flour", "10 g salt", "1 1/4 cup of flour", "1.5 piece of stuff or", "1.5 cup of water" }
从那里,我将循环删除所有不需要的单词,如'or'和Trim()。