拆分字符串并将其中一个索引转换为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

不能将字符串强制转换为整数,因此需要进行一些转换:我建议您在这种情况下使用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);
}