c# - 如何从 Unity 中的字符串中删除转义字符(符号或以 \u 开头)?
问题描述
我想从字符串中删除转义字符,例如以 \u 或 \x 开头的符号或特殊字符。这些字符如:\u20ac,\u00a5,\x20ac,\xa5
我的目标:我想从 UserName 中删除这些字符,同时也不允许用户在 InputField 中添加这些字符/符号。
解决方案
您可以使用正则表达式来做到这一点。
使用您的输入数据的快速示例:
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 事件上运行正则表达式替换功能,或者等到输入提交后再运行它,并将文本设置为替换结果。
推荐阅读
- python - 如何检查 np.array 是否存在于另一个 np.array 中?
- go - 如何仅提取在 cli 中明确设置的标志集?
- algorithm - 具有多个条件的 SP
- java - 除非调用相应的方法,否则不会执行 Lambda 正文
- c++ - 从函数捕获和初始化多个返回值的任何直接方法
- acumatica - DAC 从其他 DAC 继承,ReportDesigner 错误
- php - 我无法得到我在输入值中输入的内容
- ionic3 - ionic3 错误模块“AppModule”导入的意外指令“ExpandableComponent”。请添加@NgModule 注释?
- eclipse - 如何防止 rascal_builder 在 Eclipse IDE 中的每次保存时运行
- java - 我正在尝试将 MongoDB 中的数据逐个字段地获取到我的 Java 代码中