【发布时间】:2010-09-14 02:59:43
【问题描述】:
我看到了这个question,它询问给定一个字符串“smith;rodgers;McCalne”如何制作一个集合。答案是使用 String.Split。
如果我们没有内置 Split(),你会怎么做?
更新:
我承认编写拆分函数相当容易。下面是我会写的。使用 IndexOf 循环字符串并使用 Substring 提取。
string s = "smith;rodgers;McCalne";
string seperator = ";";
int currentPosition = 0;
int lastPosition = 0;
List<string> values = new List<string>();
do
{
currentPosition = s.IndexOf(seperator, currentPosition + 1);
if (currentPosition == -1)
currentPosition = s.Length;
values.Add(s.Substring(lastPosition, currentPosition - lastPosition));
lastPosition = currentPosition+1;
} while (currentPosition < s.Length);
我看了一下 SSCLI 的实现,它与上面的类似,除了它处理更多的用例,并且在提取子字符串之前使用不安全的方法来确定分隔符的索引。
其他人提出了以下建议。
- 使用迭代器块的扩展方法
- 正则表达式建议(未实施)
- Linq 聚合方法
是这个吗?
【问题讨论】:
-
我不明白这个问题;答案不是“写一个拆分方法”吗?写起来一点也不难。