C# 将6位数字解析为6整数数组
我希望能够解析一个六位数的数字,并将每个字符放入一个数组中,例如:738593->d[1]=7,d[2]=3。d[3]=8……等C# 将6位数字解析为6整数数组,c#,java,parsing,int,C#,Java,Parsing,Int,我希望能够解析一个六位数的数字,并将每个字符放入一个数组中,例如:738593->d[1]=7,d[2]=3。d[3]=8……等 我从Java中找到了一行代码,它完全符合我的要求,但我正在四处寻找一个与C等价的代码。有什么想法吗?我能想到的最简单的事情就是把它转换成一个字符: char[] val = s.toCharArray(); 因为char数据类型只是整数,所以这应该不是问题,而且我认为您可以: int[] val = s.toCharArray(); 但是我不能完全确定,所以没有关
我从Java中找到了一行代码,它完全符合我的要求,但我正在四处寻找一个与C等价的代码。有什么想法吗?我能想到的最简单的事情就是把它转换成一个字符:
char[] val = s.toCharArray();
因为char数据类型只是整数,所以这应该不是问题,而且我认为您可以:
int[] val = s.toCharArray();
但是我不能完全确定,所以没有关于这一点的承诺:我能想到的最简单的事情就是将它转换成一个字符:
char[] val = s.toCharArray();
因为char数据类型只是整数,所以这应该不是问题,而且我认为您可以:
int[] val = s.toCharArray();
但我不能完全肯定这一点,所以没有关于这一点的承诺:试试这个
int x=654321;
string[] stringarray=x.toString().split('');
试试这个
int x=654321;
string[] stringarray=x.toString().split('');
尝试:
这里要做的是迭代字符串中的每个字符,将它们转换为整数流IEnumerable,然后将该流转换为数组。这需要C3.0和LINQ
或者,您可以尝试:
int[] d = s.Select(c => int.Parse(c.ToString()).ToArray();
如果传入的字符串不是数字字符串,则会引发异常,但可能会对字符串中的每个字符造成性能损失,因为会生成另一个字符串
这两种方法都适用于任意大小的数字字符串*
*当然可以存储在内存中。试试:
这里要做的是迭代字符串中的每个字符,将它们转换为整数流IEnumerable,然后将该流转换为数组。这需要C3.0和LINQ
或者,您可以尝试:
int[] d = s.Select(c => int.Parse(c.ToString()).ToArray();
如果传入的字符串不是数字字符串,则会引发异常,但可能会对字符串中的每个字符造成性能损失,因为会生成另一个字符串
这两种方法都适用于任意大小的数字字符串*
*当然可以存储在内存中。在c中,这将是:
private void button2_Click(object sender, EventArgs e)
{
int[] d = new int[10];
d1 = int.Parse(s[0].ToString());
d3 = int.Parse(s[1].ToString());
d2 = int.Parse(s[2].ToString());
...
}
如果没有.ToString,它可能会工作,但我不确定。在c中,这将是:
private void button2_Click(object sender, EventArgs e)
{
int[] d = new int[10];
d1 = int.Parse(s[0].ToString());
d3 = int.Parse(s[1].ToString());
d2 = int.Parse(s[2].ToString());
...
}
int[] d = new int[6];
for(int i=0; i<6; i++){
d[i] = Int32.Parse(s[i]);
}
它可能在没有.ToString的情况下工作,但我不确定
int[] d = new int[6];
for(int i=0; i<6; i++){
d[i] = Int32.Parse(s[i]);
}
这就是在c中如何将字符串解析为int
这就是在c中将字符串解析为整数的方法如果直接转换,可能会得到asii值,请尝试以下操作:
char[] val = 738593.ToString().ToCharArray().ToArray();
其中to字符串可能避免将每个数字转换为asii值 如果直接转换,可能会得到asii值,请尝试以下方法:
char[] val = 738593.ToString().ToCharArray().ToArray();
static public int[] StringToIntArray(string input)
{
List<int> tempList = new List<int>();
foreach (char c in input)
{
if (c >= '0' && c <= '9')
{
tempList.Add(c - '0');
}
}
return tempList.ToArray();
}
其中to字符串可能避免将每个数字转换为asii值
static public int[] StringToIntArray(string input)
{
List<int> tempList = new List<int>();
foreach (char c in input)
{
if (c >= '0' && c <= '9')
{
tempList.Add(c - '0');
}
}
return tempList.ToArray();
}
请注意,这将完全忽略任何非数字。因此,如果您的输入是867ASDF5309,int数组将显示为{8,6,7,5,3,0,9}
请注意,这将完全忽略任何非数字。因此,如果您的输入是867ASDF5309,则int数组将显示为{8,6,7,5,3,0,9}不,这不起作用,即使它起作用,也不会满足问题的要求。这个问题要求的是{7,3,8,5,9,3},而不是{'7',3',8',5',9',3'}。注意,不仅类型不同,数值也不同。嗯,是的,我真是太蠢了。让落选的选票欢呼吧。不,那是行不通的,即使这样,也不会满足问题的要求。这个问题要求的是{7,3,8,5,9,3},而不是{'7',3',8',5',9',3'}。注意,不仅类型不同,数值也不同。嗯,是的,我真是太蠢了。他希望结果是一个整数数组,所以你需要将结果转换为一个整数数组,所以你需要将结果转换为一个整数数组。这仍然比必要的复杂,但与其他答案不同,你的答案实际上是正确的。。。除了你从问题中复制的内容之外,d1、d3和d2是不正确的,而不是d[0]、d[1]和d[2]。无论如何,循环可能是比单独列出每个项目更好的选择。我只是翻译了他从Java获得的内容,以便他能够理解两种语言之间的差异。是的,我知道。但他只是在找cequivalent@Marshal:对于您编写的所有s[x]语句,您的输入字符串都很小,或者由于同样的原因,d太小。看一看我的答案,它不依赖于输入字符串的大小。它仍然比必要的更复杂,但与其他答案不同,你的答案实际上是正确的。。。除了你从问题中复制的内容之外,d1、d3和d2是不正确的,而不是d[0]、d[1]和d[2]。无论如何,循环可能是比单独列出每个项目更好的选择。我只是翻译了他从Java获得的内容,以便他能够理解两种语言之间的差异。是的,我知道。但他只是在找cequivalent@Marshal:对于您编写的所有s[x]语句,您的输入字符串都很小,或者由于同样的原因,d太小。有
请看我的答案,它不依赖于输入字符串的大小。与Lee的答案相同的问题:int'0'不是0。是的,刚刚发现了它,正如你提到的那样对它进行了更改。现在我觉得很好。与问题中的不同,如果存在非数字,则不会引发异常。如果输入值已经过验证,那就无关紧要了。再次指出,你发现了这一点,并在同一时间编辑了问题;P我只是打字不够快:pYou不需要强制转换:c-“0”单独起作用,因为char被认为是一种数字类型。与Lee的回答相同的问题是:int'0不是0。是的,只是发现了它,就像你提到的那样对它进行了更改。现在我觉得很好。与问题中的不同,如果存在非数字,则不会引发异常。如果输入值已经过验证,那就无关紧要了。再次指出,你发现了这一点,并在同一时间编辑了问题;P我只是打字不够快:pYou不需要强制转换:c-“0”单独起作用,因为char被认为是数字类型。一行代码几乎不是“解析”或“算法”。一行代码几乎不是“解析”或“算法”。