我有一个字符串:["gm-63.pdf","GM413.pdf","mh524.pdf"]
如何使用c#将上述字符串转换为字符串数组?
答案 0 :(得分:5)
可能有很多方法可以做到这一点。
选项1
var input = @"[""gm-63.pdf"",""GM413.pdf"",""mh524.pdf""]";
var result = input.Trim('[', ']')
.Split(",")
.Select(x => x.Trim('"'))
.ToArray();
更新
Windows禁止使用文件名字符:
< (less than)
> (greater than)
: (colon - sometimes works, but is actually NTFS Alternate Data Streams)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)
如果这些是有效的文件名,则双引号应该没有问题,但是逗号可能是个问题。
因此请谨慎使用
选项2
您还可以将其与Json.Net
包一起使用。 Relevant documentation here
return JsonConvert.DeserializeObject<string[]>(Input);
仅仅是因为我很无聊,并且打开了我的基准测试器
所有测试都是垃圾收集的,结果按操作缩放
----------------------------------------------------------------------------
Mode : Release (64Bit)
Test Framework : .NET Framework 4.7.1 (CLR 4.0.30319.42000)
----------------------------------------------------------------------------
Operating System : Microsoft Windows 10 Pro
Version : 10.0.17134
----------------------------------------------------------------------------
CPU Name : Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
Description : Intel64 Family 6 Model 42 Stepping 7
Cores (Threads) : 4 (8) : Architecture : x64
Clock Speed : 3401 MHz : Bus Speed : 100 MHz
L2Cache : 1 MB : L3Cache : 8 MB
----------------------------------------------------------------------------
测试1
--- Standard input ---------------------------------------------------------
| Value | Average | Fastest | Cycles | Garbage | Test | Gain |
--- Scale 10 ------------------------------------------------ Time 0.257 ---
| Split | 519.472 ns | 390.200 ns | 2.063 K | 811.776 B | Base | 0.00 % |
| Json | 914.331 ns | 810.500 ns | 3.419 K | 819.200 B | N/A | -76.01 % |
--- Scale 100 ----------------------------------------------- Time 0.061 ---
| Split | 216.935 ns | 141.090 ns | 769.172 | 327.680 B | Base | 0.00 % |
| Json | 326.246 ns | 237.150 ns | 1.147 K | 163.840 B | N/A | -50.39 % |
--- Scale 1,000 --------------------------------------------- Time 0.101 ---
| Split | 126.233 ns | 112.272 ns | 433.772 | 256.176 B | Base | 0.00 % |
| Json | 186.400 ns | 166.907 ns | 638.003 | 81.968 B | N/A | -47.66 % |
--- Scale 10,000 -------------------------------------------- Time 0.456 ---
| Split | 114.009 ns | 106.419 ns | 388.291 | 263.059 B | Base | 0.00 % |
| Json | 168.608 ns | 154.450 ns | 574.312 | 82.574 B | N/A | -47.89 % |
--- Scale 100,000 ------------------------------------------- Time 5.545 ---
| Json | 206.117 ns | 199.416 ns | 701.200 | 75.731 B | N/A | 24.02 % |
| Split | 271.281 ns | 257.446 ns | 810.403 | 144.212 B | Base | 0.00 % |
----------------------------------------------------------------------------
摘要
如您所见,JsonConvert
起初比较慢,但是扩展性很好,它也可以避免您逃避问题(如前所述),您应该使用它。还有它的代码更少。
祝你好运
答案 1 :(得分:1)
假设这是实际的JSON,建议您使用JSON解析器。
使用Split
/ Select
等的其他解决方案注定会失败,因为它们不考虑转义字符和JSON的其他特定内容,例如内联双引号"
和其他逃脱了UTF-8代理人。
另一方面,如果恰好类似于JSON的只是一个字符串,那么您也可以使用其他答案中描述的任何其他方法。