我有一个字符串getallairlinedetails
。指定的字符串之间没有空格也没有任何分隔符。我怎么能像这样拆分这个字符串:“获取所有航空公司的详细信息”
答案 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;然后尝试拆分字符串。那么你将使用哪种语言,这并不重要。