首页 > 解决方案 > 如何从 Unity 中的字符串中删除转义字符(符号或以 \u 开头)?

问题描述

我想从字符串中删除转义字符,例如以 \u 或 \x 开头的符号或特殊字符。这些字符如:\u20ac,\u00a5,\x20ac,\xa5

我的目标:我想从 UserName 中删除这些字符,同时也不允许用户在 InputField 中添加这些字符/符号。

标签: c#visual-studiounity3d

解决方案


您可以使用正则表达式来做到这一点。

使用您的输入数据的快速示例:

using System;
using System.Text.RegularExpressions;
                
public class Program
{
    public static void Main()
    {
        const string userName = @"MyAwesome\u20acUser\u00a5Name\x20acWith\xa5ForbiddenCharacters";
       
        // Match anything starting with either \u or \x 
        // followed by between 1 and 4 lowercase letters or numbers.
        const string regex = @"\\(u|x)[[a-z\d]{1,4}";
    
        var sanitisedUserName = Regex.Replace(userName, regex, string.Empty);
    
        Console.WriteLine(string.Format("Input User Name: {0}\nSanitised User Name: {1}", userName, sanitisedUserName));

        /* Output:
         * Input User Name: MyAwesome\u20acUser\u00a5Name\x20acWith\xa5ForbiddenCharacters
         * Sanitised User Name: MyAwesomeUserNameWithForbiddenCharacters
         */
    }
}

这是一个 dotnetfiddle,因此您可以看到它正在运行

这是 Regex101 的链接,因此您可以了解 regex 是如何工作的

您可以在输入字段 OnChanged 事件上运行正则表达式替换功能,或者等到输入提交后再运行它,并将文本设置为替换结果。


推荐阅读