计算字符串中'/'
分隔元素的数字元素数量的最佳方法是什么?
例如,在字符串"OL/12/15/NR/17/21"
中,我们有4个数字元素。可以在数组中找到的唯一非数字(即alpha
)元素是"OL"
(离开梯形图)和"NR"
(无结果)。
这是我的解决方案,但我怀疑有更好,更有效的算法:
int cnt = 0;
string sampleString = "OL/12/15/NR/17/21";
string[] sampleArray = sampleString.split('/');
foreach (string element in sampleArray)
if (element != "OL" && element != "NR")
cnt++;
答案 0 :(得分:4)
以下是LINQ的替代选项:
string[] sampleArray = sampleString.Split(new Char[]{'/'},StringSplitOptions.RemoveEmptyEntries);
int strCount = sampleArray.Count(x=> x!= "OL" && x != "NR");
这会更短但不能说这个效率很高,Here你可以找到一个可以证明这一点的工作示例:
答案 1 :(得分:3)
使用正则表达式匹配数字:
string sampleString = "OL/12/15/NR/17/21";
int count = Regex.Matches(sampleString,@"\b\d+\b").Count;
答案 2 :(得分:0)
我更喜欢这样的通用方法:
int cnt = 0;
string sampleString = "OL/12/15/NR/17/21";
string[] sampleArray = sampleString.split('/');
int numValue;
foreach (string element in sampleArray)
if (Int32.TryParse(element , out numValue))
cnt++;
答案 3 :(得分:0)
你可以使用正则表达式,下面是你的完整代码
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(\d+)";
string input = @"OL/12/15/NR/17/21";
foreach (Match m in Regex.Matches(input, pattern))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
这是相同的演示:https://regex101.com/r/iI1wQ7/3