起因
导入数据时, 订单号前面多了一个零宽度空格ZWSP, 导致后续导入时, 匹配失败, 重复导入了订单.
相关事件
- 保存的姓名使用了从右到左的格式符, 导致存在重复姓名数据, 但无法检测出
解决办法
使用正则表达式反向匹配出, 非(中英文标点符号, 空格换行制表符, 文字, 英文字母, 数字)的字符, 替换为空
/// <summary>
/// 2023-7-3 Ciaran 移除字符串中的非(中英文标点符号, 空格换行制表符, 文字, 英文字母, 数字)的字符
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
public static string RemoveInvalidChars(this string s)
{
// var reg = new Regex(@"(?![\p{P}\s\wA-Za-z0-9]).", RegexOptions.Compiled|RegexOptions.CultureInvariant);
var reg = RegexHelper.rgInvalidChar;
return reg.Replace(s, "");
}
/// <summary>
/// 2023-7-3 Ciaran 非(中英文标点符号, 空格换行制表符, 文字, 英文字母, 数字)的字符
/// </summary>
public static bool IsInvalidChar(this char c)
{
if (RegexHelper.rgInvalidChar.IsMatch("" + c))
{
return true;
}
return false;
}
/// <summary>
/// 2023-7-3 Ciaran 字符串中的非(中英文标点符号, 空格换行制表符, 文字, 英文字母, 数字)的字符
/// </summary>
public static readonly Regex rgInvalidChar = new Regex(@"(?![\p{P}\s\wA-Za-z0-9]).", RegexOptions.Compiled|RegexOptions.CultureInvariant);