【工
【工具函数】字符串转数字
功能扩展
0.2
06-05
简单字符串转数字工具函数
  • 支持复数, 自动去除字符串中空白字符
  • 如果其中有除负号之外的特殊字符,将转换失败,并返回(ATOI_RESULT)为0,否则自动转换返回数值保存在(ATOI_RESULT)中

代码

变量
{
    全局:
        0: test
        
    玩家:
        // ATOI 参数 -> 需要转换为数字的字符串原串
		59: ATOI_SOURCE_STRING
        60: ATOI_LOOP_CHAR
        61: ATOI_CURRENT_CHAR
		// ATOI返回值 -> 转换完毕的数字
        62: ATOI_RESULT
        63: ATOI_IS_FU
		64: ATOI_LOOP_CHECK_NUMBER
		65: ATOI_ADD_OK
        66: add_temp
    
}

子程序
{
    0: ATOI
}

规则("// 子程序 - ATOI")
{
   事件
   {
       子程序;
       ATOI;
   }

   动作
   {
	   // 此函数用来将字符串转换为数字,当其中出现非法字符的时候,返回值为0,否则将返回转换后的数字
       "// 清空result"
       事件玩家.ATOI_RESULT = 0;
       事件玩家.ATOI_IS_FU = 假;
       "// 去除空白字符"
       事件玩家.ATOI_SOURCE_STRING = 字符串替换(事件玩家.ATOI_SOURCE_STRING, 自定义字符串(" "), 自定义字符串(""));
        For 玩家变量(事件玩家, ATOI_LOOP_CHAR, 0, 字符串长度(事件玩家.ATOI_SOURCE_STRING), 1);
			事件玩家.ATOI_ADD_OK = 假;
            "// 获取当前位置的文字"
            事件玩家.ATOI_CURRENT_CHAR = 字符串中字符(事件玩家.ATOI_SOURCE_STRING, 事件玩家.ATOI_LOOP_CHAR);

            "// 如果第一个是负号"
            If(事件玩家.ATOI_CURRENT_CHAR == 自定义字符串("-") && 事件玩家.ATOI_LOOP_CHAR == 0);
                事件玩家.ATOI_IS_FU = 真;
                继续;
            End;

			For 玩家变量(事件玩家, ATOI_LOOP_CHECK_NUMBER, 0, 10, 1);
				If(事件玩家.ATOI_CURRENT_CHAR == 自定义字符串("{0}", 事件玩家.ATOI_LOOP_CHECK_NUMBER));
					事件玩家.ATOI_RESULT += 事件玩家.ATOI_LOOP_CHECK_NUMBER;
					事件玩家.ATOI_ADD_OK = 真;
					中断;
				End;
			End;

            If(事件玩家.ATOI_ADD_OK == 假);
				事件玩家.ATOI_RESULT = 0;
                中断;
			End;
			
            If(事件玩家.ATOI_LOOP_CHAR != 字符串长度(事件玩家.ATOI_SOURCE_STRING) - 1);
                事件玩家.ATOI_RESULT *= 10;
            End;
        End;
        If(事件玩家.ATOI_IS_FU == 真);
            事件玩家.ATOI_RESULT *= -1;
        End;
   }
}


规则("规则")
{
   事件
   {
       持续 - 全局;
   }
   动作
   {
       全局.test[0] = 自定义字符串(" 12 7 9");
       全局.test[1] = 自定义字符串(" -12 9 8");
       全局.test[2] = 自定义字符串(" 14 +7 9");
       全局.test[3] = 自定义字符串(" 14 7 93 4");
       
   }
}

规则("规则")
{
   事件
   {
       持续 - 每名玩家;
       双方;
       全部;
   }

   条件
   {
      按钮被按下(事件玩家, 按钮(互动)) == 真;
   }

   动作
   {
       事件玩家.ATOI_SOURCE_STRING = 全局.test[0];
       调用子程序(ATOI);
       小字体信息(所有玩家(所有队伍), 事件玩家.ATOI_RESULT);
       等待(0.250, 无视条件);
       事件玩家.ATOI_SOURCE_STRING = 全局.test[1];
        调用子程序(ATOI);
       小字体信息(所有玩家(所有队伍), 事件玩家.ATOI_RESULT);
       等待(0.250, 无视条件);
       事件玩家.ATOI_SOURCE_STRING = 全局.test[2];
        调用子程序(ATOI);
       小字体信息(所有玩家(所有队伍), 事件玩家.ATOI_RESULT);
       等待(0.250, 无视条件);
       事件玩家.ATOI_SOURCE_STRING = 全局.test[3];
        调用子程序(ATOI);
       小字体信息(所有玩家(所有队伍), 事件玩家.ATOI_RESULT);

       等待(0.250, 无视条件);

        "//====================================="

        事件玩家.ATOI_SOURCE_STRING = 全局.test[0];
        调用子程序(ATOI);
        事件玩家.add_temp = 事件玩家.ATOI_RESULT;
        等待(0.250, 无视条件);
        事件玩家.ATOI_SOURCE_STRING = 全局.test[1];
        调用子程序(ATOI);
        小字体信息(事件玩家, 自定义字符串("{0}", 事件玩家.add_temp + 事件玩家.ATOI_RESULT));

   }
}
  • 注意:分享码为亚服
评论
这里空空如也~
这里空空如也~