我正在做简单的字符串输入解析,我需要一个字符串标记器。我刚接触C#,但已经编写过Java程序,C#应该有一个字符串标记器似乎是很自然的事情。是吗?它在哪里?我该如何使用它?
发布于 2008-09-16 08:43:55
您可以使用String.Split method。
class ExampleClass
{
public ExampleClass()
{
string exampleString = "there is a cat";
// Split string on spaces. This will separate all the words in a string
string[] words = exampleString.Split(' ');
foreach (string word in words)
{
Console.WriteLine(word);
// there
// is
// a
// cat
}
}
}
有关详细信息,请参阅Sam Allen's article about splitting strings in c# (性能,正则表达式)
发布于 2013-09-20 05:21:43
我只想强调C#的Split方法的强大之处,并给出更详细的比较,特别是来自具有Java背景的人的比较。
虽然Java语言中的StringTokenizer只允许一个分隔符,但我们实际上可以拆分多个分隔符,从而减少对正则表达式的需要(尽管如果需要正则表达式,请务必使用正则表达式!)以此为例:
str.Split(new char[] { ' ', '.', '?' })
它分为三个不同的分隔符,返回一个标记数组。我们还可以使用上面示例中的第二个参数来删除空数组:
str.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries)
我认为C#缺少的一件事是Java的字符串标记器(至少Java7具有这个特性),那就是能够将分隔符作为标记。C#的拆分将丢弃令牌,这在一些NLP应用程序中可能很重要,但对于更通用的应用程序,这可能不是问题。
发布于 2008-09-16 08:41:40
字符串的split方法就是您所需要的。实际上,Java中的记号赋予器类已被弃用,取而代之的是Java的字符串拆分方法。
https://stackoverflow.com/questions/70405
复制相似问题