c# - 如何使用正则表达式从输入字符串中提取所有非字母数字字符?
问题描述
目标:获取所有非字母数字字符,即使它们不连续。
设置:我在 ASP.Net 页面上有一个文本框,它调用 TextChanged 上的 C# 代码隐藏方法。此事件处理程序针对 Regex 模式运行文本框输入。
问题:我无法创建正确的正则表达式模式来提取所有非字母数字字符。
这是字符串输入:string titleString = @"%2@#$%^&";
这些是我尝试过的 C# 正则表达式模式:
string titlePattern = @"(\b[^A-Za-z0-9]+)";
结果@#$%^&
(注意:如果我使用此输入字符串%2@35%^&
,则上述正则表达式模式将识别@
符号,然后是%^&
),但绝不会是前导%
符号)。
string titlePattern = @"(\A[^A-Za-z0-9]+)";
结果与%
string titlePattern = @"(\b\W[^A-Za-z0-9]+)";
结果@#$%^&
旁注:我也在一个带有foreach
循环的 MS Visual Studio 控制台应用程序中运行它,以努力将所有无效字符放入一个集合中,我还使用网站测试输入和模式:http ://regexstorm.net/测试仪
解决方案
将替换方法与您的选择字符串一起使用。
编辑:仔细阅读后,我发现您想要相反的字符串。两者都是。
using System;
using System.Text.RegularExpressions;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
string Source = @"H)*e/.?l\l{}*o ][W!~`@#""or^-_=+ld!";
string Trash = @"[^a-zA-Z0-9]";
string InvertedTrash = @"[a-zA-Z0-9]";
Output(Source, Trash);
Console.WriteLine($"{System.Environment.NewLine}Opposite Day!{System.Environment.NewLine}");
Output(Source, InvertedTrash);
Console.ReadKey();
}
static string TakeOutTheTrash(string Source, string Trash)
{
return (new Regex(Trash)).Replace(Source, string.Empty);
}
static void Output(string Source, string Trash)
{
string Sanitized = TakeOutTheTrash(Source, Trash);
Console.WriteLine($"Started with: {Source}");
Console.WriteLine($"Ended with: {Sanitized}");
}
}
}
推荐阅读
- python-3.x - 将数据插入到页面中的特定列Python,pandas
- javascript - 使用adaptiveHeight时无法正确显示第一张图片
- ruby-on-rails - 如何从rails中的索引更新记录
- spring-boot - Spring boot - 几个请求的第一个请求奇怪的长响应时间
- javascript - 使用javascript将数据从一个页面传递到另一个页面的现代简单方法是什么?
- c# - 使用 LINQ 或等效工具来格式化 List 对象的控制台输出
- xslt-2.0 - 如何获取未包装的文本
使用 XSLT 复制标签?
- ios - 将 L2CAP 通道与 CoreBluetooth 一起使用
- python - 基于可用操作系统库版本的 pip 要求
- groovy - Groovy JMeter 传递带空格的字符串,避免 %20