You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中使用Split("\n")读取TextMeshPro InputField单行文本失败求助

Unity中TextMeshPro InputField与TXT文件内容对比问题解决

问题核心

你用lines = textField.text.Split("\n");无法拆分输入框文本,本质是TextMeshPro InputField默认输入不会自动生成换行符,除非用户手动按回车,所以Split("\n")自然拿不到单行内容。

解决方案

1. 正确拆分输入框文本(按行对比场景)

如果你的TXT文件按行存储内容,且需要InputField按行匹配,先在Inspector里勾选InputField的Multi Line选项,允许用户输入时换行。之后拆分文本要兼容不同平台的换行符(Windows是\r\n,Linux/macOS是\n),代码改成:

// 兼容多平台换行符的拆分逻辑
string[] inputLines = textField.text.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None);

如果不需要用户手动换行,只是要把输入框的完整内容和TXT的某一行对比,直接用textField.text和TXT行内容做判断即可,无需拆分。

2. 优化对比代码

你当前的嵌套循环效率较低(时间复杂度O(n*m)),可以用HashSet优化查找速度,逻辑更简洁:

// 将原始文件内容转为HashSet,提升查找效率
HashSet<string> originalFileSet = new HashSet<string>(ReadTXT.readTXT.originalFile);

// 倒序遍历originalData(和你原代码逻辑一致)
for (int j = originalData.Count - 1; j >= 0; j--)
{
    string targetData = originalData[j];
    if (originalFileSet.Contains(targetData))
    {
        Debug.Log($"原始文件内容:{targetData} | 待匹配内容:{targetData}");
    }
}

额外场景处理

若要对比输入框完整文本和整个TXT文件内容,直接读取TXT完整文本后做字符串相等判断:

string txtFullContent = File.ReadAllText("你的TXT文件路径");
// 可选忽略大小写匹配
if (txtFullContent.Equals(textField.text, StringComparison.OrdinalIgnoreCase))
{
    Debug.Log("内容完全匹配");
}

内容的提问来源于stack exchange,提问作者aesoftware

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:30:48