UnityC#字串如何获取换行符号-最基础的字串处理方法,也最容易常见错误

文章讨论了C#中使用 作为换行符,而这一符号在Mac和Linux系统中不适用。文中提供了一段错误的代码示例,用于演示如何检查和处理字符串中的换行符,并给出了修正后的代码,包括一行行读取文本的方法。此外,还提到了如何根据理解原理来调试类似问题。
摘要由CSDN通过智能技术生成

C#里面的换行符号是 \r\n

(Java的换行符号就不是 \r\n 了?应该这是windows的换行符号,mac并不如此,)

以下内容并没在mac 和 linux测过(一般linux也不需要字符串)

网上小哥的错误代码

因为换行符是占两个位的

//永远判断错的代码
var a = textBox1.Text;
var c = Environment.NewLine;
string b = "";
foreach(var ch in a)
{
   if (ch.ToString() ==c)
      b += c;
   else
      b = ch + b;
   b += "\n";
}
textBox2.Text = b;
Clipboard.SetText(b);

写了一小段代码测试一个个字符提取

确实是第一个是 \r,第二个是 \n (不是"\\r")

    IEnumerator StartTypeText()
        {
            int count = sourceText.Length;
            int curr = 1;
            var newLine = Environment.NewLine;
            while (curr<=count)
            {
                var code = sourceText.Substring(curr - 1, 1);
                if (code == newLine)//同理,获取不到newLine的
                {
                    Debug.LogError("newLine newLine newLine newLine");
                }

                if (code == "\r")
                {
                    var next = sourceText.Substring(curr, 1);
                    //Debug.LogError("is \\\\\\\r next="+sourceText.Substring(curr, 1) );
                    if (sourceText.Length > curr)
                    {
                        if (sourceText.Substring(curr, 1) == "\n")
                        {
                            Debug.LogError("is refresh.....");
                            //碰到换行符号
                            code = "\r\n";
                            curr++;
                            Refresh(true,true);
                        }
                    }
                }

                inputField.text = inputField.text + code;
                
                Debug.LogError(sourceText.Substring(curr-1,1));
                yield return new WaitForSeconds(typeTextInterval);
                curr++;
            }
            yield return null;
        }

小哥的小哥的建议方法,

一行行读取也是可行的,因为绕开了逐个字扫描+自行判断

String a = textBox1.Text;
String result = String.Empty;

String[] lines = a.Split(new String[] { Environment.NewLine }, StringSplitOptions.None);

foreach(String line in lines.Reverse())
{
    // inverse text
    foreach(char ch in line.Reverse())
    {
        result += ch;
    }

    // insert a new line
    result += Environment.NewLine;
}

// remove last NewLine
result = result.Substring(0, result.Length - 1);

示例:输入,如果您有:
test
yopla

结果将是:
alpoy
tset

其他方法:

懂了原理,就能调试了,其他请自行发挥

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

avi9111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值