我有一个包含以下几行的文件:
29x13x26
11x11x14
27x2x5
6x10x13
15x19x10
26x29x15
8x23x6
17x8x26
20x28x3
23x12x24
11x17x3
19x23x28
25x2x25
1x15x3
25x14x4
我正在将文件解析为列表。我想做的只是从每一行中获取数字。
例如,在第一行中,我想乘29、13、26
这是我的代码
//Get line by line all gift sizes from txt and add them to a list
foreach (string line in File.ReadAllLines("GiftSizes.txt"))
{
//Insert values into list
dimensionsList.Add(line);
}
foreach(var giftDimension in dimensionsList){
//get the numbers from each line
}
答案 0 :(得分:2)
使用string.Split
,它将把您的字符串分成多个块并省略定界符-在您的情况下为字符'x'
。
//Get line by line all gift sizes from txt and add them to a list
foreach (string line in File.ReadAllLines("GiftSizes.txt"))
{
//Insert values into list
dimensionsList.Add(line);
}
foreach(var giftDimension in dimensionsList)
{
int[] numbers = giftDimension.Split('x').Select(x => Convert.ToInt32(x)).ToArray();
}
答案 1 :(得分:1)
使用正则表达式:
static readonly _threeDigits = new Regex( @"^(\d+)x(\d+)x(\d+)$", RegexOptions.IgnoreCase | RegexOptions.Compiled );
static IEnumerable<(Int32 x, Int32 y, Int32 z)> ReadValues( String fileContents )
{
MatchCollection matches = _threeDigits.Match( fileContents );
foreach( Match m in matches )
{
yield return (
x: Int32.Parse( m.Groups[1], NumberStyles.Integer, CultureInfo.InvariantCulture ), // Groups start at [1], not [0].
y: Int32.Parse( m.Groups[2], NumberStyles.Integer, CultureInfo.InvariantCulture ),
z: Int32.Parse( m.Groups[3], NumberStyles.Integer, CultureInfo.InvariantCulture )
);
}
}
static List<(Int32 x, Int32 y, Int32 z)> ReadValuesAsList( String fileContents )
{
return ReadValuesAsList( fileContents ).ToList();
}
答案 2 :(得分:0)
您可以在字符串上使用分割功能
foreach(var giftDimension in dimensionsList)
{
int[] numberArray=giftDimension.Split('x');
}