//csc.exe /r:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\microsoft.visualbasic.dll noname1.cs
namespace ConsoleApplication
{
using System;
using System.Text;
using JeffreyZhao;
using Microshaoft;
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
//[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
int iteration = 10000;// * 1000;
string noises = "`~!@#$%&*()_+-=\t{}|[]\\:\";'<>?,./\0\r\n ";
noises += "~!#¥%……&×()——+·-={}|【】\:“”;‘’'<>?,./ ";
string s = "B按ah`~!@#$%&*()_+-=\t{}|撒旦撒大[]\\:\";'<>?,./\0\r\n ";
s += "~!#¥%……&×()——+·-={}|【】\:“”;‘’'<>?,./ ";
//int l = noises
s += "AB按时打算阿斯顿llAA啊ah";
//s = "asdsad阿斯顿撒ooo";
CodeTimer.Time
(
"1",
iteration,
() =>
{
StringHelper.FilterNoises(s, noises);
}
);
CodeTimer.Time
(
"2",
iteration,
() =>
{
StringHelper.FilterNoises(s, noises);
}
);
CodeTimer.Time
(
"3",
iteration,
() =>
{
StringHelper.FilterNoises(s);
}
);
Console.WriteLine("Hello World");
Console.WriteLine(Environment.Version.ToString());
}
}
}
namespace JeffreyZhao
{
using System;
using System.Diagnostics;
using System.Threading;
using System.Runtime.InteropServices;
public static class CodeTimer
{
public static void Initialize()
{
Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High;
Thread.CurrentThread.Priority = ThreadPriority.Highest;
Time("", 1, () => { });
}
public static void Time(string name, int iteration, Action action)
{
if (String.IsNullOrEmpty(name))
{
return;
}
// 1.
ConsoleColor currentForeColor = Console.ForegroundColor;
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine(name);
// 2.
GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
int[] gcCounts = new int[GC.MaxGeneration + 1];
for (int i = 0; i <= GC.MaxGeneration; i++)
{
gcCounts[i] = GC.CollectionCount(i);
}
// 3.
Stopwatch watch = new Stopwatch();
watch.Start();
ulong cycleCount = GetCycleCount();
for (int i = 0; i < iteration; i++)
{
action();
}
ulong cpuCycles = GetCycleCount() - cycleCount;
watch.Stop();
// 4.
Console.ForegroundColor = currentForeColor;
Console.WriteLine("\tTime Elapsed:\t{0:N0}{1}", watch.ElapsedMilliseconds, "ms");
Console.WriteLine("\tCPU Cycles:\t{0:N0}", cpuCycles);
// 5.
for (int i = 0; i <= GC.MaxGeneration; i++)
{
int count = GC.CollectionCount(i) - gcCounts[i];
Console.WriteLine("\tGen {0}:\t\t{1}", i, count);
}
Console.WriteLine();
}
private static ulong GetCycleCount()
{
ulong cycleCount = 0;
//Windows Vista
//QueryThreadCycleTime(GetCurrentThread(), ref cycleCount);
return cycleCount;
}
[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool QueryThreadCycleTime(IntPtr threadHandle, ref ulong cycleTime);
[DllImport("kernel32.dll")]
static extern IntPtr GetCurrentThread();
}
}
//csc.exe /r:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\microsoft.visualbasic.dll noname1.cs
namespace Microshaoft
{
using System;
using Microsoft.VisualBasic;
using System.Globalization;
public class StringHelper
{
public static string FilterNoises(string text, string noises)
{
text = Strings.StrConv(text, VbStrConv.Narrow, 0);
//Console.WriteLine("[{0}]", text);
//char[] a = noises.ToCharArray();
int l = noises.Length;
for (int i = 0; i < noises.Length; i++)
{
string r = noises.Substring(i, 1);
//text = text.Replace(r, "");
//text= Strings.Replace(text, r, "");
//text = Strings.Replace(text, "o", "i");
}
/// foreach (char c in a)
/// {
/// string s = new string(new char[] {c});
/// text = text.Replace(s, "");
/// }
return text;
}
public static string FilterNoises2(string text, string noises)
{
text = Strings.StrConv(text, VbStrConv.Narrow, 0);
//Console.WriteLine("[{0}]", text);
char[] a = noises.ToCharArray();
int l = noises.Length;
/// for (int i = 0; i < noises.Length; i++)
/// {
/// string r = noises.Substring(i, 1);
/// text = text.Replace(r, "");
/// }
foreach (char c in a)
{
string s = new string(new char[] { c });
text = text.Replace(s, "");
}
return text;
}
public static string FilterNoises(string text)
{
text = Strings.StrConv(text, VbStrConv.Narrow, 0);
int l;
l = text.Length;
int i = 0;
if (l > 0)
{
do
{
UnicodeCategory uc = Char.GetUnicodeCategory(text, i);
string ucName = Enum.GetName(uc.GetType(), uc).ToLower();
if (!ucName.Contains("letter"))
{
l = text.Length;
string r = text.Substring(i, 1);
text = text.Replace(r, "");
if (l == text.Length)
{
break;
}
}
else
{
i++;
}
if (i >= text.Length)
{
break;
}
} while (l >= text.Length);
}
return text;
}
}
}