如何在c#中拆分指定字符串中的单词?

时间:2015-04-03 08:35:19

标签: c#

我有一个字符串getallairlinedetails。指定的字符串之间没有空格也没有任何分隔符。我怎么能像这样拆分这个字符串:“获取所有航空公司的详细信息”

3 个答案:

答案 0 :(得分:4)

由于此处没有明显的分割模式,因此没有可靠方式。

但是,如果你的单词溢出不是很大 - 你可以尝试创建一些字典,然后使用这个字典进行拆分。

您可以尝试在字典中替换字典

中的每个单词
word_from_dictionary => " " + word_from_dictionary + " "

并使用空格作为分隔符将结果字符串分割为String.Split

例如,让您的词典包含单词“get”,“all”和“details”。

然后通过替换字典中的所有单词,您将获得get all airline details - 这可以被拆分。

当然这不是一种非常可靠的方式,因为它依赖于你需要以某种方式填充的字典。

答案 1 :(得分:1)

    public static List<string> Dict = new List<string> { "details", "airline", "all", "get" };

    static void Main(string[] args)
    {
        String s = "getallairlinedetails";

        Console.WriteLine(ReturnSplitString(s));

        Console.ReadLine();
    }

    public static string ReturnSplitString(string s)
    {
        string[] ww = new string[s.Length];

        foreach (string word in Dict)
        {
            if (s.Contains(word))
            {
                int ind = s.IndexOf(word);
                ww[ind] = word;
            }
        }

        string sf = "";

        foreach (string sr in ww)
        {
            if (sr != null)
                sf += sr + " ";
        }

        return sf.TrimEnd(' ');
    }

这样的事情将是你唯一的选择,迭代一个包含单个单词的字典,按照它们在字符串中的位置存储它们,然后按顺序将数组加入到最后。

顺便说一下,这段代码正确地返回,只需更改s并将任何单词添加到字典中将返回不同的单词。

如果没有至少知道你正在寻找的是什么,就没有办法做到这一点。

答案 2 :(得分:0)

这是不可能的。 Split方法至少需要一个字符,如空格,以便分割字符串。否则,没有任何标准将字符串拆分为子串数组。

在尝试选择某种类型的方法来解决问题之前,先考虑一下这个问题。你怎么分裂这个字符串?你的算法是什么?

考虑后者,很快就会意识到你根本无法拆分它,因为你没有任何可以依赖的东西。

例如,在您的情况下,如果字符串是这样的:

"get_all_airline_details"

很明显,所有单词都用_彼此分开。因此,从左到右,您将在第一个_处找到第一个单词的结尾。然后第二个单词将在此_之后开始,并将在第二个_结束,依此类推。

当然这被认为是你会注意到这个字符串的时候。如果要将其拆分为c#,可以使用字符串的split方法传递此字符_。然而,上面提到的事实是我们应该首先找到一个&#34;模式&#34;然后尝试拆分字符串。那么你将使用哪种语言,这并不重要。