2015-12-30 70 views
1

我有以下代碼:分割字符串和轉換指標之一,因爲INT

 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

+0

你試過了嗎? –

+0

@ d.moncada是的,但它說我不能將字符串轉換爲int。所以唯一的方法是使用轉換呢? – Nickso

+0

您是否嘗試過使用Convert?你會得到什麼錯誤? – Jorgel

回答

3

你不能施放字符串作爲整數,所以你需要做一些轉換: 我建議你在這種情況下使用Int.TryParse()。 因此,其他部分將是這樣的:

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

轉換的stringint這樣的:

var myInt = 0; 
if (Int32.TryParse(prueba.Split('_')[1], out myInt)) 
{ 
    // use myInt here 
} 
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 */} 
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(); 
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); 
}