C#如何将锯齿数组中的短语拆分后复制到另一个锯齿数组
解决方案:将短语锯齿数组拆分为单词锯齿数组
实现代码
在你现有拆分句子到短语的代码基础上,添加以下逻辑即可完成短语到单词的拆分:
// 初始化存储单词的锯齿数组,外层长度与phrases一致 string[][] words = new string[phrases.Length][]; // 定义拆分单词的分隔符(这里用空格,可按需调整) char[] wordSeparator = { ' ' }; for (int i = 0; i < phrases.Length; i++) { // 用临时列表动态收集当前句子的所有单词 List<string> currentWords = new List<string>(); // 遍历当前句子下的每个短语 foreach (string phrase in phrases[i]) { // 拆分短语为单词,同时移除空字符串(避免空格导致的无效元素) string[] splitWords = phrase.Split(wordSeparator, StringSplitOptions.RemoveEmptyEntries); currentWords.AddRange(splitWords); } // 将列表转为数组,存入锯齿数组对应位置 words[i] = currentWords.ToArray(); }
关键说明
- 锯齿数组初始化:
words的外层长度和phrases保持一致,确保每个原句子对应的单词组能准确对应存储。 - 处理空元素:使用
StringSplitOptions.RemoveEmptyEntries可以过滤掉短语前后空格、连续空格产生的空字符串,保证结果的整洁性。 - 临时列表过渡:由于每个句子对应的单词数量不固定,用
List<string>动态收集单词比直接固定数组长度更灵活,避免出现数组容量不足或空间浪费的问题。
完整整合示例
如果把拆分句子到短语、再拆分短语到单词的逻辑整合,完整代码如下:
string[] sentences = { "Hello, world: this is a test", "Another phrase: split into words" }; string[][] phrases; string[][] words; // 第一步:拆分句子为短语 { phrases = new string[sentences.Length][]; char[] charRemover = { ',', ':' }; for (int i = 0; i < sentences.Length; i++) { phrases[i] = sentences[i].Split(charRemover); } } // 第二步:拆分短语为单词 { words = new string[phrases.Length][]; char[] wordSeparator = { ' ' }; for (int i = 0; i < phrases.Length; i++) { List<string> currentWords = new List<string>(); foreach (string phrase in phrases[i]) { string[] splitWords = phrase.Split(wordSeparator, StringSplitOptions.RemoveEmptyEntries); currentWords.AddRange(splitWords); } words[i] = currentWords.ToArray(); } } // 测试输出(可选) for (int i = 0; i < words.Length; i++) { Console.WriteLine($"句子{i+1}的单词:"); foreach (string word in words[i]) { Console.WriteLine($" - {word}"); } }
内容的提问来源于stack exchange,提问作者Volodymyr
相关产品推荐
相关产品推荐

