前几天我有一个有趣的采访问题,我真的很挣扎.(非常雄心勃勃的)规范要求我在C#中为两个不同的数据流编写解析器.这是第一个流的组成示例:
30=EUR/USD,35=3,50=ON,51=12.5,52=13.5,50=6M,51=15.4,52=16.2,50=1Y,51=17.2,52=18.3
Run Code Online (Sandbox Code Playgroud)
其中30是货币对,35是期限数,50,51,52是期限,买入和卖出.买入和卖出是可选的,但是正确的中标 - 买卖元组将至少具有两个价格中的一个.他们提供的框架代码暗示解析此行的结果应该是3个单独的对象(DataElement实例).我最终得到了一个相当讨厌的switch语句和基于循环的实现,我不确定它是否真的有效.
有什么技术可以读取这种流?我试图找出一些递归的东西,这是我无法做到的.
编辑:基于@ evanmcdonnall的答案(接受)这里是完全编译和工作的代码,以防它对其他人有用.
List<DataElement> Parse(string row)
{
string currency=string.Empty;
DataElement[] elements = null;
int j = 0;
bool start = false;
string[] tokens = row.Split(',');
for (int i = 0; i < tokens.Length; i++)
{
string[] kv = tokens[i].Split('=');
switch (kv[0])
{
case "30":
currency = kv[1];
break;
case "35":
elements = new DataElement[int.Parse(kv[1])];
break;
case "50":
if (start)
j++;
elements[j] = new DataElement() { currency = currency, tenor = kv[1] };
start = true; …Run Code Online (Sandbox Code Playgroud) 我有以下格式的一系列输入字符串:
typeA:code1,
typeA:code2,
typeA:code3,
typeB:code4,
typeB:code5,
typeB:code6,
typeC:code7,
...
Run Code Online (Sandbox Code Playgroud)
我需要得到一个Map<String, List<String>>具有以下结构:
typeA, [code1, code2, code3]
typeB, [code4, code5, code6]
typeC, [code7, code8, ...]
Run Code Online (Sandbox Code Playgroud)
问题是生成每个类型我需要在每个输入字符串上调用这样的函数:
public static String getType(String code)
{
return code.split(":")[0]; // yes this is horrible code, it's just for the example, honestly
}
Run Code Online (Sandbox Code Playgroud)
我非常有信心Streams和Collectors可以做到这一点,但我正在努力获得正确的法术咒语来实现它.
我发现System.Monitor非常令人困惑,虽然我理解线程,锁,死锁,竞争条件,餐饮哲学家和所有爵士乐.通常我使用ManualResetEvent()来进行线程间协调,但我知道这是一个重量级的内核对象,System.Monitor(Enter/Pulse等)效率更高.我用谷歌搜索和谷歌搜索,但找不到一个明智的例子.
如果SO工作人员可以向我解释这个可能很棒的构造,我将非常感激:-)
我对C#/ .NET中的LINQ完全不熟悉.我知道我可以使用它将DataSet转换为数组/列表,我能朝相反的方向前进吗?
我正在使用NPlot生成捕获价格的图表,这些图表存储在List中,其中PriceInformation是一个包含两个公共双打和一个DateTime的类.
任何建议都非常欢迎.
我有一组使用C#和C++组合构建的应用程序.我们在两种语言之间有一组共享对象,而不是在每种语言中单独定义每个语言,我宁愿使用代码生成工具.理想情况下,这样的工具将是FOSS,尽管这不是绝对的要求.尽管存在来自基类的继承,接口的实现,其他对象类型的包含以及其他对象类型的集合,但对象本身相对简单.
C++目标环境是Visual C++ 2008.
有没有人对可以处理这种任务的工具有任何建议?
示例代码:
public class Tax
{
private static Dictionary<string, double> _TaxRates;
public Dictionary<string,double> TaxRates { get { return _TaxRates; } }
}
Run Code Online (Sandbox Code Playgroud)