您可以使用两个正则表达式。首先,使用模式
"\t|<bullet>"
(其中
<bullet>
表示弹头的表示),将TAB和弹头替换为空格(
" "
)。其次,使用模式为您的有效字符列表的否定字符集,用空字符串(
""
)替换无效字符,即摆脱它们。由于需要保留CR和LF字符(以及空格),因此必须将它们添加到有效字符集中:
using System;
using System.Text.RegularExpressions;
static class Program
{
public static void Main()
{
string pattern1 = @"\t";
Regex regex1 = new Regex(pattern1, RegexOptions.Compiled);
string pattern2 = @"[^A-Za-z0-9~!#$^&*()_+|`\-=\\{}:"">?<\[\];',./ \r\n]";
Regex regex2 = new Regex(pattern2, RegexOptions.Compiled);
string input = "ABZabz09~!#$^&*()_+|`-=\\{}:\">?<[];',./ \r\nárvíztűrő\ttükörfúrógép";
string temp = regex1.Replace(input, " ");
string output = regex2.Replace(temp, "");
Console.WriteLine(input);
Console.WriteLine(output);
Console.ReadKey(true);
}
}
输出:
ABZabz09~!
árvíztűrő tükörfúrógép
ABZabz09~!
rvztr tkrfrgp
请注意,在
árvíztűrő
后的 TAB 被替换为一个空格。
关于项目符号:
我在Word中制作了一个项目符号列表,并将其复制到网页文本区域中。然后我保存了HTML并发现项目符号被保存为UTF-8编码的字符
E280A2
。这就是我上面所说的“项目符号的表示方式”。您应该找出可能的项目符号字符的二进制表示,并将它们添加到第一个模式中:要么将它们与TAB字符进行OR运算,要么将它们全部放入一个字符集中。
using System;
using System.Text;
using System.Text.RegularExpressions;
static class Program
{
public static void Main()
{
byte[] bulletBytes = new byte[] { 0xE2, 0x80, 0xA2 };
string bullet= Encoding.UTF8.GetString(bulletBytes);
string pattern1 = @"[\t" + bullet + "]";
Regex regex1 = new Regex(pattern1, RegexOptions.Compiled);
string pattern2 = @"[^A-Za-z0-9~!#$^&*()_+|`\-=\\{}:"">?<\[\];',./ \r\n]";
Regex regex2 = new Regex(pattern2, RegexOptions.Compiled);
string input =
bullet + "ABZabz09~!#$^&*()_+|`-=\\{}:\">?<[];',./ \r\n" +
bullet + "árvíztűrő\ttükörfúrógép";
string temp = regex1.Replace(input, " ");
string output = regex2.Replace(temp, "");
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine(input);
Console.WriteLine(output);
Console.ReadKey(true);
}
}
输出结果(你应该将控制台字体更改为Lucida Console以查看子弹点):
•ABZabz09~!
•árvíztűrő tükörfúrógép
ABZabz09~!
rvztr tkrfrgp
现在除了TAB,每行开头的圆点也被替换成了一个空格。
textarea
上启用一个所见即所得编辑器,并提供从Word粘贴的选项如何?TinyMCE有一个专门处理此任务的插件。 - Tr1stanASCII
SQL 函数来确定它是哪个字符,我猜你可能找错了:http://msdn.microsoft.com/en-us/library/ms177545.aspx - Arran