110,533
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
public class MyClass
{
public static void Main()
{
//session模拟
//Sesion["username"] = "admin\billy";
//string userName = Session["username"];
string sessionUserName = "admin\billy";
string userName = sessionUserName;
Console.WriteLine("原值:" + userName);
string userNameReplaceOne = userName.Replace(@"\" , @"\\");
Console.WriteLine("替换方法1:" + userNameReplaceOne);
string userNameReplaceTwo = userName.Replace(@"\b",@"\\b");
Console.WriteLine("替换方法2:" + userNameReplaceTwo);
//可行
string [] userNameSplit = userName.Split('\b');
if( userNameSplit.Length ==0 )
Console.WriteLine("替换方法3:" + userNameSplit[0]);
else
Console.WriteLine("替换方法3:" + userNameSplit[0] + @"\b" + userNameSplit[1]);
//可行
string userNameReplaceFour = Regex.Replace(userName,"\b",@"\b");
Console.WriteLine("替换方法4:" + userNameReplaceFour);
Console.Read();
}
}
using System;
using System.Collections.Generic;
public class MyClass
{
public static void Main()
{
//session模拟
//Sesion["username"] = "admin\billy";
//string userName = Session["username"];
string sessionUserName = "admin\billy";
string userName = sessionUserName;
Console.WriteLine("原值:" + userName);
string userNameReplaceOne = userName.Replace(@"\" , @"\\");
Console.WriteLine("替换方法1:" + userNameReplaceOne);
string userNameReplaceTwo = userName.Replace(@"\b",@"\\b");
Console.WriteLine("替换方法2:" + userNameReplaceTwo);
string [] userNameSplit = userName.Split('\b');
if( userNameSplit.Length ==0 )
Console.WriteLine("替换方法3:" + userNameSplit[0]);
else
Console.WriteLine("替换方法3:" + userNameSplit[0] + @"\b" + userNameSplit[1]);
Console.Read();
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
public class MyClass
{
public static void Main()
{
//session模拟
string sessionUserName = "admin\b\n\f\t\rilly";
string userName = sessionUserName;
//替换
string userNameReplaceFive = userName.Escape();
Console.WriteLine("替换方法5:" + userNameReplaceFive);
Console.Read();
}
}
public static class StringExtension
{
private static readonly byte [] _category ;
static StringExtension()
{
_category = new byte[] {
0, 0, 0, 0, 0, 0, 0, 0, 2/*这是\b的ascii位置.原来是0*/, 2, 2, 0, 2, 2, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2, 0, 0, 3, 4, 0, 0, 0, 4, 4, 5, 5, 0, 0, 4, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 4, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 0, 0, 0
};
}
internal static bool IsMetachar(char ch)
{
bool ok= ((ch <= '|') && (_category[ch] >= 1));
return ok;
}
public static string Escape(this string input)
{
if( string.IsNullOrEmpty(input))
{
return input;
}
for (int i = 0; i < input.Length; i++)
{
if (!IsMetachar(input[i]))
{
continue;
}
StringBuilder builder = new StringBuilder();
char ch = input[i];
builder.Append(input, 0, i);
do
{
builder.Append('\\');
switch (ch)
{
case '\t':
ch = 't';
break;
case '\n':
ch = 'n';
break;
case '\f':
ch = 'f';
break;
case '\r':
ch = 'r';
break;
case '\b':
ch = 'b';
break;
}
builder.Append(ch);
i++;
int startIndex = i;
while (i < input.Length)
{
ch = input[i];
if (IsMetachar(ch))
{
break;
}
i++;
}
builder.Append(input, startIndex, i - startIndex);
}
while (i < input.Length);
return builder.ToString();
}
return input;
}
}