VB.NET到C#禁用字符数组

VB.NET到C#禁用字符数组,c#,vb.net,character,special-characters,C#,Vb.net,Character,Special Characters,我在VB.NET中有这个禁用字符数组。如何转换它 原始VB.NET禁用字符: Public BannedChars() As String = New String() {" ", ",", ".", ";", "/", "\", "!", """", "(", ")", "£", "$", "%", "^", "&", "*", "{", "}", "[", "]", "@", "#", "'", "~", "<", ">", "?", "+", "=", "-", "|"

我在VB.NET中有这个禁用字符数组。如何转换它

原始VB.NET禁用字符:

Public BannedChars() As String = New String() {" ", ",", ".", ";", "/", "\", "!", """", "(", ")", "£", "$", "%", "^", "&", "*", "{", "}", "[", "]", "@", "#", "'", "~", "<", ">", "?", "+", "=", "-", "|", "¬", "`"}
 public string BannedChars = new string(new char[] {
    ' ', ',', '.', ';', '/', '\\', '!', '\'', '(', ')', '£', '$', 
    '%', '^', '&', '*', '{', '}', '[', ']', '@', '#', '"', 
    '~', '<', '>', '?', '+', '=', '-', '|', '¬', '`'});
有什么帮助吗! 谢谢 你的问题很模糊。如果需要字符数组,请使用
字符
,而不是
字符串
类型:

  public char[] BannedChars = new char[] {
    ' ', ',', '.', ';', '/', '\\', '!', '\'', '(', ')', '£', '$', 
    '%', '^', '&', '*', '{', '}', '[', ']', '@', '#', '"', 
    '~', '<', '>', '?', '+', '=', '-', '|', '¬', '`'};
如果需要单个字符串(可以视为只读字符数组):

编辑:如果要检查字符串是否包含任何禁用字符,我建议使用
HashSet
而不是数组:

 // static : you have just one set of banned char, don't you?
 public static readonly HashSet<char> BannedChars = new HashSet<char>() {
    ' ', ',', '.', ';', '/', '\\', '!', '\'', '(', ')', '£', '$', 
    '%', '^', '&', '*', '{', '}', '[', ']', '@', '#', '"', 
    '~', '<', '>', '?', '+', '=', '-', '|', '¬', '`' 
 }; 

 ...

 string Mytext = @"some string with many characters: 'a', 'b'; which can be banned...";

 if (MyText.Any(c => BannedChars.Contains(c))) {
   // At least one Banned char has been found...
 }
//静态:您只有一组被禁止的字符,不是吗?
public static readonly HashSet BannedChars=new HashSet(){
' ', ',', '.', ';', '/', '\\', '!', '\'', '(', ')', '£', '$', 
'%', '^', '&', '*', '{', '}', '[', ']', '@', '#', '"', 
'~', '', '?', '+', '=', '-', '|', '¬', '`' 
}; 
...
string Mytext=@“一些包含许多字符的字符串:'a','b';这是可以禁止的……”;
if(MyText.Any(c=>BannedChars.Contains(c))){
//至少发现了一个被禁止的字符。。。
}

我在这里可以相当清楚地看到这个问题,但情况可能并非总是如此,因此请在将来提供更好的描述

在这种情况下,转义才是问题所在。在VB中,双引号是唯一需要在文本字符串中转义的字符,这是用另一个双引号完成的。C#支持许多转义序列,反斜杠是转义字符。这意味着用反斜杠转义双引号,还需要转义用另一个反斜杠反斜杠,例如

string[] arr = new[] {"\\", "\""};
我认为这应该能解决您的问题,但我们会看看在修复后是否会出现其他问题。

C#使用小写关键字,因此将
Public
更改为
Public
,将
New
更改为
New

C#将类型放在变量之前,而不是
As
子句,因此将
As
删除,并将
String
移动到
BannedChars
之前

C使用方括号代替括号表示数组,因此将
()
替换为
[]

C#将声明的数组类型放在类型内,而不是放在变量之后(传统VB),因此将
[]
放在
字符串之后

C#允许省略数组初始值设定项的基类型,而不是像VB那样要求整个类型或连同
new
关键字一起省略它,因此从初始值设定项中删除
String

C#字符串文字有多种形式。与VB最接近的称为逐字字符串,它们用
@
打开,用
关闭,并像VB一样,用stutter for literal”关闭,所以在每次打开
@
之前都要放
@

C#用分号终止语句,而VB不使用分号(这是最简单的说法),因此添加一个

public String[] BannedChars = new [] {
    @" ", @",", @".", @";", @"/", @"\", @"!", @"""", @"(", @")", 
    @"£", @"$", @"%", @"^", @"&", @"*", @"{", @"}", @"[", @"]", 
    @"@", @"#", @"'", @"~", @"<", @">", @"?", @"+", @"=", @"-", 
    @"|", @"¬", @"`" };
public String[]BannedChars=new[]{
@" ", @",", @".", @";", @"/", @"\", @"!", @"""", @"(", @")", 
@"£", @"$", @"%", @"^", @"&", @"*", @"{", @"}", @"[", @"]", 
@"@", @"#", @"'", @"~", @"", @"?", @"+", @"=", @"-", 
@"|", @"¬", @"`" };
.NET数据类型(适用于Java、JavaScript等) 至于什么是字符:
String
可以容纳零个或多个字符。
Char
可以容纳一个字符、半个字符甚至更少。
Char
是一个UTF-16代码单元。
String
是一个计数序列UTF-16代码单元。一个或两个UTF-16代码单元代表一个Unicode码点。一个字组是一个基c的序列odepoint后跟一系列组合的代码点。文本呈现显示图形集簇;用户称它们为字符。一些代码点是“组合的”“如中所述,它们旨在表示与具有特定组合码点的不同基本码点相同的事情。这使得比较字符串相当困难。因此,Unicode库提供了用于组合或分解“组合”码点的规范化函数


因此,字符串数组似乎是代码的一个不错的选择,特别是因为原始代码就是这样使用的。

说它不起作用是不够的。您有义务向我们提供一个完整和清晰的解释,说明您试图实现的目标、您试图实现目标的方式以及您尝试时发生的情况。不要偷懒于你的描述,期望我们猜测或假设你已经知道的。哦,对不起!我还没有检查这个主题底部是否缺少一些文本!!等等,我将更新…我如何用字符串特殊字符表示?老实说,我倾向于这样做:
var bannedChars=@“,.;/\!”“()”。tocharray()。使用逐字字符串文字(带有
@
前缀)意味着字符串不包含转义序列,因此反斜杠只是一个常规字符,唯一需要的转义是VB样式的双引号。使用
字符串
意味着它比所有数组元素更具可读性,并且您还可以使用
字符
数组,这可能更合适。谢谢!但很抱歉,底部遗漏了文本!谢谢我同意使用
char
/
char
比使用
string
/
string
更好。可能需要对使用数组的代码进行一两次更改,但这可能会使代码更加正确。例如,测试
字符串
是否包含任何非法字符就像
if(myString.any(ch=>BannedChars.contains(ch))
一样简单。
 public string[] BannedChars = new string[] {
    " ", ",", ".", ";", "/", "\\", "!", "'", "(", ")", "£", "$", 
    "%", "^", "&", "*", "{", "}", "[", "]", "@", "#", "\"", 
    "~", "<", ">", "?", "+", "=", "-", "|", "¬", "`"});
 "\\", "\""
 // static : you have just one set of banned char, don't you?
 public static readonly HashSet<char> BannedChars = new HashSet<char>() {
    ' ', ',', '.', ';', '/', '\\', '!', '\'', '(', ')', '£', '$', 
    '%', '^', '&', '*', '{', '}', '[', ']', '@', '#', '"', 
    '~', '<', '>', '?', '+', '=', '-', '|', '¬', '`' 
 }; 

 ...

 string Mytext = @"some string with many characters: 'a', 'b'; which can be banned...";

 if (MyText.Any(c => BannedChars.Contains(c))) {
   // At least one Banned char has been found...
 }
string[] arr = new[] {"\\", "\""};
public String[] BannedChars = new [] {
    @" ", @",", @".", @";", @"/", @"\", @"!", @"""", @"(", @")", 
    @"£", @"$", @"%", @"^", @"&", @"*", @"{", @"}", @"[", @"]", 
    @"@", @"#", @"'", @"~", @"<", @">", @"?", @"+", @"=", @"-", 
    @"|", @"¬", @"`" };