我的应用程序中有一个URL格式化程序,但问题是客户希望能够输入特殊字符,如:
:| / - “'& *#@
我有一个字符串:
string myCrazyString = ":|/-\“‘&*#@";
我有一个传递另一个字符串的函数:
public void CleanMyString(string myStr)
{
}
如何将传递“myStr”的字符串与“myCrazyString”进行比较,以及“myStr是否有myCrazyString中的任何字符将其删除?”
所以,如果我转到我的功能:
“这个”是一个“cra @ zy:me | ssage / an-d I&希望#清除它“
它应该返回:
“这是一个疯狂的消息,我想要清理它”
我如何在CleanMyString函数中执行此操作?
答案 0 :(得分:4)
使用正则表达式,如:
pattern = @"(:|\||\/|\-|\\|\“|\‘|\&|\*|\#|\@)";
System.Text.RegularExpressions.Regex.Replace(inputString, pattern, string.Empty);
|
|
本身的特殊字符,请使用\
,因此\|
这将处理|
正常字符。测试:
inputString = @"H\I t&he|r#e!";
//output is: HI there!
答案 1 :(得分:3)
没有正则表达式的解决方案,仅用于可用性目的:
static string clear(string input)
{
string charsToBeCleared = ":|/-\“‘&*#@";
string output = "";
foreach (char c in input)
{
if (charsToBeCleared.IndexOf(c) < 0)
{
output += c;
}
}
return output;
}
答案 2 :(得分:3)
您可以像其他人一样使用正则表达式,或者像这样的代码:
char[] myCrazyChars = "\"\':|/-\\“‘&*#@".ToCharArray();
string myCrazyString = "this ' is a\" cra@zy: me|ssage/ an-d I& want#to clea*n it";
string[] splittedCrazyString = myCrazyString.Split(myCrazyChars);
string notCrazyStringAtAll = string.Join("", splittedCrazyString);
答案 3 :(得分:2)
尝试使用正则表达式。
答案 4 :(得分:2)
这是一种相当直接的方式。根据“疯狂字符串中的所有字符拆分字符串,然后将它们连接在一起,没有坏字符。
string myCrazyString = @":|/-\“‘&*#@";
string str = @"this ' is a"" cra@zy: me|ssage/ an-d I& want#to clea*n it";
string[] arr = str.Split(myCrazyString.ToCharArray(), StringSplitOptions.None);
str = string.Join(string.Empty, arr);
答案 5 :(得分:2)
另一种可能的解决方案:
namespace RemoveChars
{
class Program
{
static string str = @"this ' is a\“ cra@zy: me|ssage/ an-d I& want#to clea*n it";
static void Main(string[] args)
{
CleanMyString(str);
}
public static void CleanMyString(string myStr)
{
string myCrazyString = @":|/-\“‘&*#@";
var result = "";
foreach (char c in myStr)
{
var t = true; // t will remain true if c is not a crazy char
foreach (char ch in myCrazyString)
if (c == ch)
{
t = false;
break;
}
if (t)
result += c;
}
}
}
}
答案 6 :(得分:-1)
您可以尝试使用if语句,如果存在某个字符,请提及疯狂
if (myCrazyString.Contains("@"))
{
Console.WriteLine("This string is out of controL!");
}
正则表达式也是一个好主意(也许更好)
答案 7 :(得分:-1)
试试这个:
1.定义StringBuilder
2.浏览要清理的字符串的字符。
3.输入StringBuilder中所需的所有内容,并通过简单地放置if条件来忽略其他特殊字符。
4.Rerurn StringBuilder。
或者
尝试使用正则表达式。