Unity C#中如何移除字符串里反斜杠后紧跟的换行符?
移除字符串中反斜杠后紧跟的换行符
你的问题出在换行符的实际组成上:在Windows系统中,换行符是\r\n(回车符+换行符),而你代码里用的"\\\n"只匹配了反斜杠加单个换行符,所以无法命中目标内容。以下是两种可行的解决方案:
方案1:使用正则表达式(通用跨平台)
正则可以匹配不同系统下的换行符(\n或\r\n),确保覆盖所有情况:
using System.Text.RegularExpressions; // 需要引入命名空间 public class removeSlash : MonoBehaviour { private string testString = @"374 373 372 \ 371 370 369 368 367 366 365 "; [Button] void CleanString() { string cleaned = Regex.Replace(testString, @"\\\r?\n", ""); Debug.Log(cleaned); } }
这里的正则表达式@"\\\r?\n"表示:匹配反斜杠(\\),后面可选的回车符(\r?),再加上换行符(\n),匹配到后替换为空字符串。
方案2:替换对应系统的换行组合
如果你确定运行环境的换行符格式,也可以直接替换对应的组合:
- Windows环境(换行符为
\r\n):string cleaned = testString.Replace("\\\r\n", ""); - Unix/Linux/macOS环境(换行符为
\n):string cleaned = testString.Replace("\\\n", "");
为什么你的原代码第三行无效?
在Windows下,你定义的逐字字符串中,反斜杠后的换行会被存储为\r\n,所以实际要匹配的是\\\r\n,而不是\\\n,因此原代码的替换无法生效。
内容的提问来源于stack exchange,提问作者arcadeperfect
相关产品推荐
相关产品推荐

