您好我正在尝试将String转换为Integer。
下面的代码显示了我尝试将字符串转换为整数的部分。
if (other.gameObject.CompareTag("PickUp"))
{
if ( checkpointboolean == false)
{
string pickupName = other.ToString(); //other = Pickup4
//Remove first 6 letters thus remaining with '4'
string y = pickupName.Substring(6);
print(y); // 4 is being printed
int x = 0;
int.TryParse(y, out x);
print (x); // 0 is being printed
我也尝试了以下代码而不是'0'我收到以下错误:
if (other.gameObject.CompareTag("PickUp"))
{
if ( checkpointboolean == false)
{
//Get Object name ex: Pickup4
string pickupName = other.ToString();
//Remove first 6 letters thus remaining with '4'
string y = pickupName.Substring(6);
print(y);
int x = int.Parse(y);
FormatException:输入字符串的格式不正确 System.Int32.Parse(System.String s)
答案 0 :(得分:1)
int.TryParse
返回一个布尔值,如果成功则返回true,否则返回false。您需要将其包装在if块中并使用该逻辑执行某些操作。
if(int.TryParse(y, out x))
print (x); // y was able to be converted to an int
else
// inform the caller that y was not numeric, your conversion to number failed
至于为什么你的号码没有被转换,我不能说直到你发布字符串值是什么。
答案 1 :(得分:0)
对于这种情况,您的第一次尝试是最好的,代码工作正常,int.TryParse()
将0
提供给out参数并返回false 表示转换失败。输入字符串格式不正确/无法转换为整数。您可以使用int.TryParse()
的返回值来检查这一点。为此,您需要做的是: -
if(int.TryParse(y, out x))
print (x); //
else
print ("Invalid input - Conversion failed");
答案 2 :(得分:0)
首先,ToString()
通常用于调试目的,因此无法保证
other.ToString()
将在下一版软件中返回预期的"Pickup4"
。你可能想要像
int x = other.gameObject.SomeProperty;
int x = other.SomeOtherProperty;
int x = other.ComputePickUp();
...
但是,如果您坚持使用.ToString()
而不是硬编码六个字母(原因相同:调试信息倾向于从版本更改为版本),但使用正则表达式或其他:
var match = Regex.Match(other.ToString(), "-?[0-9]+");
if (match.Success) {
int value;
if (int.TryParse(match.Value, out value))
print(value);
else
print(match.Value + " is not an integer value");
}
else
print("Unexpected value: " + other.ToString());