Unity中如何用冒号分割字符串提取时分整数?
解决Unity Legacy UI单个输入框提取HH:mm格式时间整数的问题
核心思路
先对输入文本做预处理,再分割字符串,最后安全转换并验证数值有效性,解决之前转换失败的问题。
具体实现代码
using UnityEngine; using UnityEngine.UI; public class TimeInputHandler : MonoBehaviour { public InputField timeInputField; // 拖入你的Legacy UI输入框 // 绑定到按钮或输入框的结束编辑事件 public void ExtractTimeValues() { // 清理输入文本的前后空白,避免用户误输入空格 string rawInput = timeInputField.text.Trim(); // 用冒号分割成小时和分钟两部分 string[] timeSegments = rawInput.Split(':'); // 先检查格式是否符合HH:mm if (timeSegments.Length != 2) { Debug.LogError("请输入正确的HH:mm格式时间"); return; } // 安全转换为整数(用TryParse避免转换失败抛出异常) bool isValidHour = int.TryParse(timeSegments[0], out int hour); bool isValidMinute = int.TryParse(timeSegments[1], out int minute); if (isValidHour && isValidMinute) { // 验证时间范围是否合理 if (hour is >= 0 and <= 23 && minute is >= 0 and <= 59) { Debug.Log($"提取完成:小时={hour},分钟={minute}"); // 这里写你拿到小时和分钟后的业务逻辑 } else { Debug.LogError("时间数值无效:小时需在0-23之间,分钟需在0-59之间"); } } else { Debug.LogError("小时或分钟输入的不是有效数字"); } } }
使用步骤
- 创建一个空GameObject,把上面的脚本挂上去
- 在Inspector面板中,将你的Legacy UI InputField拖到
timeInputField字段上 - 给输入框添加
On End Edit事件,或者添加一个按钮,将按钮的On Click事件绑定到脚本的ExtractTimeValues方法
关键细节
Trim():处理用户不小心输入的前后空格,这很可能是你之前分割后转换失败的原因之一int.TryParse():相比int.Parse(),它不会在转换失败时崩溃,而是返回布尔值告知结果,更适合用户输入场景- 双重验证:先检查格式是否为两段,再验证数值范围,确保输入的时间是有效的
内容的提问来源于stack exchange,提问作者Overdrive
相关产品推荐
相关产品推荐

