拆分字符串并将其中一个索引转换为int
本文关键字:一个 索引 转换 int 字符串 字符 串并 拆分 | 更新日期: 2023-09-27 18:28:23
我有以下代码:
static void Main(string[] args)
{
string prueba = "Something_2.zip";
int num;
prueba = prueba.Split('.')[0];
if (!prueba.Contains("_"))
{
prueba = prueba + "_";
}
else
{
//The code I want to try
}
}
这个想法是,在其他情况下,我想在_
之后拆分字符串并将其转换为int,我这样做就像
num = Convert.ToInt16(prueba.Split('_')[1]);
但我能投平分票吗?例如num = (int)(prueba.Split('_')[1]);
这样做可能吗?或者我必须使用Convert
?
不能将字符串强制转换为整数,因此需要进行一些转换:我建议您在这种情况下使用
Int.TryParse()
。因此,其他部分将如下所示:
else
{
if(int.TryParse(prueba.Substring(prueba.LastIndexOf('_')),out num))
{
//proceed your code
}
else
{
//Throw error message
}
}
将string
转换为int
,如下所示:
var myInt = 0;
if (Int32.TryParse(prueba.Split('_')[1], out myInt))
{
// use myInt here
}
这是一个字符串,所以你必须解析它。你可以使用Convert.ToInt32、int.parse或int.TryParse来实现这一点,就像这样:
var numString = prueba.Split('_')[1];
var numByConvert = Convert.ToInt32(numString);
var numByParse = int.Parse(numString);
int numByTryParse;
if(int.TryParse(numString, out numByTryParse))
{/*Success, numByTryParse is populated with the numString's int value.*/}
else
{/*Failure. You can handle the fact that it failed to parse now. numByTryParse will be 0 */}
string prueba = "Something_2.zip";
prueba = prueba.Split('.')[0];
int theValue = 0; // Also default value if no '_' is found
var index = prueba.LastIndexOf('_');
if(index >= 0)
int.TryParse(prueba.Substring(index + 1), out theValue);
theValue.Dump();
您可以使用正则表达式并避免所有的字符串拆分逻辑。如果您需要我使用的正则表达式的解释,请参阅https://regex101.com/r/fW9fX5/1
var num = -1; // set to default value that you intend to use when the string doesn't contain an underscore
var fileNamePattern = new Regex(@".*_(?<num>'d+)'..*");
var regexMatch = fileNamePattern.Match("Something_2.zip");
if (regexMatch.Success)
{
int.TryParse(regexMatch.Groups["num"].Value, out num);
}