我有一个字符串,其中包含要传递给另一个可执行文件的命令行参数,我需要提取包含各个参数的字符串[],方法与在命令行中指定命令时C#相同.通过反射执行另一个程序集入口点时将使用字符串[].
这有标准功能吗?或者是否有正确分割参数的首选方法(正则表达式?)?它必须处理'''可能正确包含空格的分隔字符串,所以我不能只拆分''.
示例字符串:
string parameterString = @"/src:""C:\tmp\Some Folder\Sub Folder"" /users:""abcdefg@hijkl.com"" tasks:""SomeTask,Some Other Task"" -someParam foo";
Run Code Online (Sandbox Code Playgroud)
示例结果:
string[] parameterArray = new string[] {
@"/src:C:\tmp\Some Folder\Sub Folder",
@"/users:abcdefg@hijkl.com",
@"tasks:SomeTask,Some Other Task",
@"-someParam",
@"foo"
};
Run Code Online (Sandbox Code Playgroud)
我不需要命令行解析库,只需要获取应生成的String [].
更新:我必须更改预期结果以匹配C#实际生成的内容(删除了拆分字符串中的额外")
这是挑战(我自己的发明,但如果以前出现在网络的其他地方,我不会感到惊讶).
编写一个函数,该函数采用单个参数,该参数是简单数学表达式的字符串表示形式,并将其作为浮点值进行计算."简单表达"可以包括以下任何一种:正十进制数或负十进制数,+,-,*,/,(,).表达式使用(正常)中缀表示法.操作员应按其出现的顺序进行评估,即不像在BODMAS中那样进行 评估,但当然应该正确观察括号.该函数应该为此表单的任何可能表达式返回正确的结果.但是,该函数不必处理格式错误的表达式(即语法错误的表达式).
表达的例子:
Run Code Online (Sandbox Code Playgroud)1 + 3 / -8 = -0.5 (No BODMAS) 2*3*4*5+99 = 219 4 * (9 - 4) / (2 * 6 - 2) + 8 = 10 1 + ((123 * 3 - 69) / 100) = 4 2.45/8.5*9.27+(5*0.0023) = 2.68...
我预计会有某种形式的"作弊"/狡猾,所以请让我预先反对它!通过作弊,我指的是eval
在动态语言(如JavaScript或PHP)中使用或等效函数,或者同时编译和执行代码.(我认为我的"没有BODMAS"的规格几乎可以保证这一点.)除此之外,没有任何限制.我在这里预计会有一些Regex解决方案,但不仅仅是这样,我们会感到很高兴.
现在,我主要对C#/ .NET解决方案感兴趣,但是任何其他语言都是完全可以接受的(特别是F#和Python用于功能/混合方法).我还没有决定我是否会接受最短或最巧妙的解决方案(至少对于语言而言)作为答案,但我欢迎任何语言的任何形式的解决方案,除了我刚才禁止的!
我现在在这里发布了我的C#解决方案(403个字符).更新: …
是什么让在'r'模式下解析文本文件比在'rb'模式下解析它更方便?特别是当有问题的文本文件可能包含非ASCII字符时.
我是文本挖掘的新手.我正在使用一个开源jar(Mate Parser),它在依赖解析后以CoNLL 2009格式给出输出.我想使用依赖解析结果进行信息提取.但我能够理解一些输出但不能理解CoNLL数据格式.任何人都可以帮助我理解CoNLL数据格式吗?任何类型的指针将不胜感激.
我有一个.txt文件,其中包含以下详细信息:
ID^NAME^DESCRIPTION^IMAGES
123^test^Some text goes here^image_1.jpg,image_2.jpg
133^hello^some other test^image_3456.jpg,image_89.jpg
Run Code Online (Sandbox Code Playgroud)
我想做的是解析这个广告,将值变为更易读的格式,如果可能的话,可能会变成数组.
谢谢
如何获取输入CSV文件中每行的第一列并输出到新文件?我在想awk
但是不确定如何使用.
Python中解析匹配括号中包含的文本块的最佳方法是什么?
"{ { a } { b } { { { c } } } }"
Run Code Online (Sandbox Code Playgroud)
应该最初返回:
[ "{ a } { b } { { { c } } }" ]
Run Code Online (Sandbox Code Playgroud)
把它作为输入应该返回:
[ "a", "b", "{ { c } }" ]
Run Code Online (Sandbox Code Playgroud)
哪个应该返回:
[ "{ c }" ]
[ "c" ]
[]
Run Code Online (Sandbox Code Playgroud) 有没有更好的方法来获取一个字符串,如"(123)455-2344"并从中得到"1234552344"而不是这样做:
var matches = Regex.Matches(input, @"[0-9]+", RegexOptions.Compiled);
return String.Join(string.Empty, matches.Cast<Match>()
.Select(x => x.Value).ToArray());
Run Code Online (Sandbox Code Playgroud)
也许一个正则表达式模式可以在一场比赛中做到这一点?我似乎无法创造一个来实现这一目标.
我使用awk来计算csv文件中一列的总和.数据格式如下:
id, name, value
1, foo, 17
2, bar, 76
3, "I am the, question", 99
Run Code Online (Sandbox Code Playgroud)
我使用这个awk脚本来计算总和:
awk -F, '{sum+=$3} END {print sum}'
Run Code Online (Sandbox Code Playgroud)
name字段中的某些值包含逗号,这会破坏我的awk脚本.我的问题是:能解决这个问题吗?如果是的话,我该怎么做?
谢谢.