所以假设我有这些参数:“aword1 bword dword zword aword2”
我必须将它们插入到这样的字符串数组中:
arrayofstrings[0][] = aword1 aword2
arrayofstrings[1][] = bword
arrayofstrings[2][] = null/nothing
arrayofstrings[3][] = dword
...
arrayofstrings[25][] = zword
我已经知道如何做到这一点,但它并不优雅。
我的解决方案:检查 args 中每个单词的第一个字母(26 个 if 或 26 个 case),并在 26 个整数数组中递增计数器,这样我就可以知道我必须分配多少空间,检查每个单词并将其复制到 [][]arrayofstrings .
如果没有 26 个 if 或 case,我该怎么做?非常感激。如果您没有注意到我是 c# 新手(来自 c++,vb)。
ps:我的字母表包含26个字母。
稍后编辑:
这是我的示例代码(只是为了让您了解我想要的内容):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lab4LineComanda
{
class Program
{
static void Main(string[] args)
{
string[][] ArrayOfStrings = new string[25][];
int[] counters = new int[26];
for (int i = 0; i < args.Length; i++)
{
if (args[i].First() == 'a')
counters[0]++;
if (args[i].First() == 'b')
counters[1]++;
//if's for each letter which I don't feel like doing
if (args[i].First() == 'z')
counters[25]++;
}
Array.Sort(args);
ArrayOfStrings[0] = new string[counters[0]];
ArrayOfStrings[1] = new string[counters[1]];
for (int i = 0; i < counters[0]; i++)
ArrayOfStrings[0][i] = args[i];
//again, for each letter i must do this, which, again, I don't feel like doing(there must be better way)
}
}
}
我不知道有多少以“a”开头的单词(如果有的话)。这适用于每个字母。
出于教育目的,我必须使用 string[][]。我使用了“c++”标签,因为对我来说它更像是一个逻辑问题,而不是一个特定于语言的问题,但这是我的坏事。
很抱歉混淆了,我很难准确地解释我想要什么,因为英语很难(对我来说):)。