在this question中,我提到我使用的strings
包含单独的integer
值,如下所示:"18 37 237"
。话虽如此,进一步进入我的程序,我需要单独访问这些integers
,以便我可以将它们打印到文件中。我猜测最好的方法是将它们存储在integer array
中,其大小取决于ints
中string
的数量integer array
。
这是我目前针对这个问题的目标:
-Size ints
根据string
array
的数量ints
而定
- 使用Regex
加载"SampleText 12 23 34"
(可能使用某种{{1}}方法)
我的问题是,我将如何编码这些目标?在解决了上述目标后,我应该从那里开始。
更新:为了消除疑惑,我想指出我的所有字符串都包含其他非数字字符,其中大多数实际上都是:{{1}}。我很抱歉没有最初清理它。
答案 0 :(得分:1)
您可以使用此代码:
var ints = str.Split(' ').Select(x => int.Parse(x)).ToArray();
答案 1 :(得分:1)
在使用int.Parse之前,您可能希望过滤序列:
var ints = str
.Split()
.Where(x => x.All(char.IsDigit))
.Select(int.Parse)
.ToArray();
char.IsDigit
通常是一个不错的选择,但它允许所有数字,而不仅仅是拉丁数字(从0到9),如果你想只允许从0
到9
的数字更可取的方式是:
var digits = new[] {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
var ints = str
.Split()
.Where(x => x.All(digits.Contains))
.Select(int.Parse)
.ToArray();
答案 2 :(得分:0)
我这样做的方法是使用String.Split
和int.TryParse
。
string[] strings = myString.Split( new string[]{ " " }, StringSplitOptions.RemoveEmptyEntries );
int[] ints = new int[ strings.Length ];
for( int i = 0; i < ints.Length; ++i )
{
if( !int.TryParse( strings[i], out ints[i] )
{
// error
}
}
答案 3 :(得分:0)
string s = "18 37 SomeText 237";
string[] resultOfSplit = s.Split(' ');
List<int> intList = List<int>();
for (var i=0; i<resultOfSplit.Length;i++)
{
int temp=0;
if(Int.TryParse(resultOfSplit[i],out temp))
{
intList.Add(temp);
}
}
// Below line to convert the list to an array
int[] intArray = intList.ToArray();
因此,您需要使用.Split()和.TryParse()
更新了代码以跳过数组
中的非整数值答案 4 :(得分:0)
如果你真的想要一个数组,你的整数总是以空格分隔:
string[] seperateInts = testString.Split(' ');
int[] intArray = new int[seperateInts.Length];
for (int i = 0; i < seperateInts.Length; i++)
int.TryParse(seperateInts[i], out intArray[i]);
列表可能是更好的解决方案:
List<int> intList = new List<int>();
foreach (string s in testString.Split(' ');
{
int parsedInt = 0;
//Avoid bad ints
if (int.TryParse(s, out parsedInt))
intList.Add(parsedInt);
}
答案 5 :(得分:0)
这个正则表达式会做你期望的
var subject = "18 37 237";
var regex = new Regex(@"\d+");
var myInts = regex.Matches(subject)
.Cast<Match>()
.Select(x=> int.Parse(x.Value))
.ToArray();