首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#有像Java一样的字符串令牌器吗?

C#有像Java一样的字符串令牌器吗?
EN

Stack Overflow用户
提问于 2008-09-16 08:38:16
回答 9查看 139.3K关注 0票数 69

我正在做简单的字符串输入解析,我需要一个字符串标记器。我刚接触C#,但已经编写过Java程序,C#应该有一个字符串标记器似乎是很自然的事情。是吗?它在哪里?我该如何使用它?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 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# (性能,正则表达式)

票数 118
EN

Stack Overflow用户

发布于 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应用程序中可能很重要,但对于更通用的应用程序,这可能不是问题。

票数 24
EN

Stack Overflow用户

发布于 2008-09-16 08:41:40

字符串的split方法就是您所需要的。实际上,Java中的记号赋予器类已被弃用,取而代之的是Java的字符串拆分方法。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档