同样,我是一名离散的数学家,不是编码员,而是试图将C#用于我正在研究的论文并需要一些帮助。
我有一个代码,用于根据用户输入生成一组随机整数,并将它们打印为以逗号分隔的字符串,但需要将它们转换为向量(或int数组?)。我不确定哪个是合适的,但我在网上找不到如何在C#中使用它们。我需要能够将向量函数应用于它们,因此每个条目仍然需要是可识别的和整数,但是向量需要能够根据用户输入而改变大小。
答案 0 :(得分:4)
如果您已经有逗号分隔的字符串,则可以使用String.Split()
方法将其基于逗号分割为数组,然后您可以将这些值中的每一个转换为适当的整数分别使用Int32.Parse()
或Convert.ToInt32()
方法:
// The Split() method will yield an array, then the Select() statement
// will map each string value to it's appropriate integer and finally
// the last ToArray() call will make this into an actual array of integers
var output = input.Split(',').Select(n => Int32.Parse(n)).ToArray();
你可以see an example of this in action here。如果需要显式忽略可能的空条目和空格,可以使用以下调整后的示例:
var output = input.Split(new char[]{','}, StringSplitOptions.RemoveEmptyEntries)
.Select(s => Int32.Parse(s.Trim()))
.ToArray();
更安全的方法仍然是仅使用可通过Int32.TryParse()
方法正确解析为整数的值,如下所示:
// Split your string, removing any empty entries
var output = strings.Split(new char[]{','}, StringSplitOptions.RemoveEmptyEntries)
.Select(n => {
// A variable to store your value
int v;
// Attempt to parse it, store an indicator if the parse was
// successful (and store the value in your v parameter)
var success = Int32.TryParse(n, out v);
// Return an object containing your value and if it was successful
return new { Number = v, Successful = success };
})
// Now only select those that were successful
.Where(attempt => attempt.Successful)
// Grab only the numbers for the successful attempts
.Select(attempt => attempt.Number)
// Place this into an array
.ToArray();