如果给定索引处的char是数字,则不确定从char数组中删除char的最佳方法。
private string TextBox_CharacterCheck(string tocheckTextBox)
{
char[] charlist = tocheckTextBox.ToCharArray();
foreach (char character in charlist)
{
if (char.IsNumber(character))
{
}
}
return (new string(charlist));
}
谢谢。
// 现在已解决。感谢所有贡献的人
答案 0 :(得分:4)
您可以使用Linq的力量:
return new string(tocheckTextBox.Where(c => !char.IsNumber(c)).ToArray())
答案 1 :(得分:1)
使用正则表达式非常简单:
var result = Regex.Replace("a1b2c3d4", @"\d", "");
(如@Adassko所述,如果您只是想让数字0到9,而不希望其他任何数字字符,则可以使用"[0-9]"
代替@"\d"
。 / p>
您还可以使用StringBuilder相当有效地完成此操作:
var sb = new StringBuilder();
foreach (var ch in "a1b2c3d4")
{
if (!char.IsNumber(ch))
{
sb.Append(ch);
}
}
var result = sb.ToString();
您也可以使用linq:
var result = new string("a1b2c3d4".Where(x => !char.IsNumber(x)).ToArray());
答案 2 :(得分:1)
使用正则表达式:
private string TextBox_CharacterCheck(string tocheckTextBox)
{
return Regex.Replace(tocheckTextBox, @"[\d]", string.Empty);;
}
答案 3 :(得分:0)
System.String
是不可变的。您可以使用string.Replace
或正则表达式将不需要的字符删除为新字符串。
答案 4 :(得分:0)
您最好的选择是使用正则表达式。
字符串是不可变的,这意味着您无法更改它们-您需要重写整个字符串-以最佳方式进行操作,您应该使用StringBuilder
类和Append
每个想要的字符。
还要当心您的代码-char.IsNumber
不仅检查字符0
-9
,还会为每个数字字符(例如{{1})返回true
},而您可能不想要。
这是返回٢
的字符的完整列表:
true
如果只希望可分析的数字,还应该在正则表达式中使用0123456789٠١٢٣٤٥٦٧٨٩۰۱۲۳۴۵۶۷۸۹߀߁߂߃߄߅߆߇߈߉०१२३४५६७८९০১২৩৪৫৬৭৮৯੦੧੨੩੪੫੬੭੮੯૦૧૨૩૪૫૬૭૮૯୦୧୨୩୪୫୬୭୮୯௦௧௨௩௪௫௬௭௮௯౦౧౨౩౪౫౬౭౮౯೦೧೨೩೪೫೬೭೮೯൦൧൨൩൪൫൬൭൮൯๐๑๒๓๔๕๖๗๘๙໐໑໒໓໔໕໖໗໘໙༠༡༢༣༤༥༦༧༨༩၀၁၂၃၄၅၆၇၈၉႐႑႒႓႔႕႖႗႘႙០១២៣៤៥៦៧៨៩᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙᥆᥇᥈᥉᥊᥋᥌᥍᥎᥏᧐᧑᧒᧓᧔᧕᧖᧗᧘᧙᭐᭑᭒᭓᭔᭕᭖᭗᭘᭙᮰᮱᮲᮳᮴᮵᮶᮷᮸᮹᱀᱁᱂᱃᱄᱅᱆᱇᱈᱉᱐᱑᱒᱓᱔᱕᱖᱗᱘᱙꘠꘡꘢꘣꘤꘥꘦꘧꘨꘩꣐꣑꣒꣓꣔꣕꣖꣗꣘꣙꤀꤁꤂꤃꤄꤅꤆꤇꤈꤉꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙0123456789
而不是[0-9]
。
您还可以使用技巧来\d
在字符上输入字符串,然后.Split
将其返回。这不仅可以删除一个或多个字符,还可以用其他字符替换它。
我使用此技巧从文件名中删除不正确的字符:
.Join
此代码会将有效文件名中不能使用的任何字符替换为string.Join("-", possiblyIncorrectFileName.Split(Path.GetInvalidFileNameChars()))
答案 5 :(得分:0)
如果给定索引处的char是数字,则可以使用LINQ从char数组中删除char。
//This will return you the list of char discarding the number.
var removedDigits = tocheckTextBox.Where(x => !char.IsDigit(x));
//This will return the string without numbers.
string output = string.join("", removedDigits);