我在查找汽车注册详细信息时从DVLA捕获了以下字符串,我需要能够从CC中提取数字。
" A5 S LINE BLACK EDITION PLUS TDI 190(2 DOOR),1968cc,2015 - PRESENT"
鉴于字符串的长度可以改变,有没有办法用子字符串来做到这一点,所以例如总是从cc之前抓取数字而没有前面的空格?还要记住,这有时可以是3位数字或4位数字。
答案 0 :(得分:4)
这就是诀窍:
- @articles.each do |article|
.article
- if article.last_comment.present?
%comment= article.last_comment.text
它会捕获string input = "A5 S LINE BLACK EDITION PLUS TDI 190 (2 DOOR), 1968cc, 2015 - PRESENT";
string size;
Regex r = new Regex("(\\d*)cc", RegexOptions.IgnoreCase);
Match m = r.Match(input);
if (m.Success)
{
size = m.Groups[0];
}
答案 1 :(得分:4)
如果逗号计数没有改变,您可以执行以下操作:
string s = "A5 S LINE BLACK EDITION PLUS TDI 190 (2 DOOR), 1968cc, 2015 - PRESENT";
string ccString = s.Split(',').ToList().Find(x => x.EndsWith("cc")).Trim();
int cc = Int32.Parse(ccString.Substring(0, ccString.Length - 2));
答案 2 :(得分:0)
这是另一种解决方案:
string text = "A5 S LINE BLACK EDITION PLUS TDI 190 (2 DOOR), 1968cc, 2015 - PRESENT";
string[] substrings = text.Split(',');
string numeric = new String(substrings[1].Where(Char.IsDigit).ToArray());
Console.WriteLine(numeric);
这是一个有效的DEMO
答案 3 :(得分:0)
您可以使用正则表达式匹配带有字符串的模式 - 因此您可以返回与给定模式匹配的字符串部分。此正则表达式模式将尝试匹配符合以下模式的字符串部分:
\d{1,5} *[cC]{2}
\d{1,5}
开始(对于引擎cc值似乎合理!)*
[cC]{2}
所以你可以用以下方式使用它:
string str = "A5 S LINE BLACK EDITION PLUS TDI 190 (2 DOOR), 1968cc, 2015 - PRESENT";
Match result = Regex.Match(str, @"\d{1,5} *[cC]{2}");
string cc = result.Value; // 1968cc