【发布时间】:2020-01-16 15:51:27
【问题描述】:
在使用字符串、特殊字符和分隔符时有什么好的选择?
例如
string name = "test, test";
string result = name + @"test, test";
List<string> list = new List<string>();
可以说我希望这个字符串拆分并放入每个项目的列表中。 在这种情况下,“名称是一个项目”,“测试,测试”是一个项目
所以我可以这样做:
String.split(list.ToArray(), ',');
我将使用逗号作为分隔符,但两个项目也已经包含它们。
结果应该是:
0 测试,测试
1 测试,测试
但由于它以逗号分隔,因此结果将是
0 测试
1 次测试
2 测试
3 测试
为了防止这种情况,我可以这样做
if(name.Contains(","))
{
name = name.Replace(",","comma");
}
然后转换回来。 但我不喜欢这段代码,它有点像意大利面。 我能做的是做一个类翻译适配器和2个方法转换器和去转换器
但是你如何检查那些特殊字符或者在这种情况下你会建议什么。 因为我遇到过这样的情况,但有多个特殊字符,如 , 和 #。但我不想限制文本框。
【问题讨论】:
-
(1) 最好的选择是首先不要连接字符串。 (2) 你是如何将字符串添加到列表中的?
-
为什么要在这里拆分?结果应该是“0 test test 1 test, test” 您列表中的第一项是您的姓名,您的第二项是新字符串。您只需将它们添加到列表中而无需加入它们。在您提出问题的方式中,您不需要拆分,因为您从一开始就有单独的字符串。
-
这取决于您的数据来自哪里。如果您可以选择不首先将它们连接在一起(将它们直接放入列表中),那会更好。如果您希望处理用户输入的以字符分隔的数据,您可能只需要严格限制您接受的分隔符。这是 CSV 格式本身的一个关键问题。
-
最好使用集合数据结构而不是连接然后切片。
-
String 没有这样的拆分方法。你的结果是“测试,测试,测试”,那么是什么让“测试,测试”成为一个项目而“测试,测试”成为另一个项目?这里的逻辑是什么?为什么不简单地将它们作为项目添加到您的列表中?
标签: c# .net-4.6.1