【发布时间】:2011-09-19 02:19:43
【问题描述】:
我有一个看起来像这样的输入字符串:
4 Bob 32 Joe 64 Sue 123 Bill 42
其中 4 表示要跟随的字符串整数对的数量。我目前的处理方式是这样的:
var strings = input.Split(' ');
int count = Int32.Parse(strings[0]);
for ( int i = 0; i < count; i++ )
{
string name = strings[count*2 + 1];
int number = Int32.Parse(strings[count*2 + 1]);
ProcessPerson(name, number);
}
这感觉很麻烦。 C# 中是否有一些库可以包装字符串并为我提供“readInt”和“readString”等服务。我最终希望有这样的东西:
int count = input.ReadInt();
for(int i = 0; i<count; i++)
{
ProcessPerson(input.ReadString(), input.ReadInt());
}
在这种情况下看起来并没有太大的改进,但我的实际对象模型要复杂一些。我知道其他语言也有类似的功能,但我不记得有任何 .net 库可以简单地从字符串的前面读取。
【问题讨论】:
-
你有一些正则表达式的知识吗?像
((\d+) ([a-zA-Z]+))+这样的东西可以为你完成工作......如果你想要一个例子,请告诉我。也许您正在寻找另一种解决方案:) -
你需要一个类似于Java的Scanner的类,你可以在stackoverflow.com/questions/722270/…看到那种类的基础
-
是的,正则表达式肯定是要走的路。
-
对于这个简单的例子,正则表达式可以工作,但是是的,我正在寻找更像 java 的扫描仪的东西。
标签: c# .net string text-parsing