拆分一个字符串并将其中一个索引转换为int

时间:2015-12-30 02:21:56

标签: c# string split

我有以下代码:

        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

5 个答案:

答案 0 :(得分:3)

  

您无法将字符串转换为整数,因此您需要进行一些转换:   我建议你在这个场景中使用Int.TryParse()。   因此,else部分将如下所示:

else
  {
     if(int.TryParse(prueba.Substring(prueba.LastIndexOf('_')),out num))
       {
         //proceed your code
       }
     else
       {
         //Throw error message
       }
   }

答案 1 :(得分:2)

string转换为int,如下所示:

var myInt = 0;
if (Int32.TryParse(prueba.Split('_')[1], out myInt))
{
   // use myInt here
}

答案 2 :(得分:2)

它是一个字符串,所以你必须解析它。您可以使用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 */}

答案 3 :(得分: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();

答案 4 :(得分:0)

您可以使用正则表达式并避免所有字符串拆分逻辑。如果您需要使用正则表达式的解释,请参阅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);
}