繁体   English   中英

C#字符数组在特定索引处删除

[英]C# Char Array remove at specific index

如果给定索引处的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));
}

提前致谢。

// 现在已解决。 感谢所有贡献者

您可以使用Linq的功能:

return new string(tocheckTextBox.Where(c => !char.IsNumber(c)).ToArray())

使用Regex相当容易:

var result = Regex.Replace("a1b2c3d4", @"\d", "");

(如@Adassko所述,如果需要数字0到9,而不需要其他任何数字字符,则可以使用"[0-9]"代替@"\\d" )。

您还可以使用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());

使用正则表达式:

private string TextBox_CharacterCheck(string tocheckTextBox)
{
    return Regex.Replace(tocheckTextBox, @"[\d]", string.Empty);;
}

System.String是不可变的。 您可以使用string.Replace或正则表达式将不需要的字符删除为新字符串。

最好的选择是使用正则表达式。 字符串是不可变的,这意味着您不能更改它们-您需要重写整个字符串-若要以最佳方式进行操作,则应使用StringBuilder类并Append每个字符。

同时还要注意你的代码- char.IsNumber不仅检查字符0 - 9 ,它也返回true为每个数字字符,如٢ ,你可能不希望这样。

这是返回true的字符的完整列表:

0123456789٠١٢٣٤٥٦٧٨٩۰۱۲۳۴۵۶۷۸۹߀߁߂߃߄߅߆߇߈߉०१२३४५६७८९০১২৩৪৫৬৭৮৯੦੧੨੩੪੫੬੭੮੯૦૧૨૩૪૫૬૭૮૯୦୧୨୩୪୫୬୭୮୯௦௧௨௩௪௫௬௭௮௯౦౧౨౩౪౫౬౭౮౯೦೧೨೩೪೫೬೭೮೯൦൧൨൩൪൫൬൭൮൯๐๑๒๓๔๕๖๗๘๙໐໑໒໓໔໕໖໗໘໙༠༡༢༣༤༥༦༧༨༩၀၁၂၃၄၅၆၇၈၉႐႑႒႓႔႕႖႗႘႙០១២៣៤៥៦៧៨៩᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙᥆᥇᥈᥉᥊᥋᥌᥍᥎᥏᧐᧑᧒᧓᧔᧕᧖᧗᧘᧙᭐᭑᭒᭓᭔᭕᭖᭗᭘᭙᮰᮱᮲᮳᮴᮵᮶᮷᮸᮹᱀᱁᱂᱃᱄᱅᱆᱇᱈᱉᱐᱑᱒᱓᱔᱕᱖᱗᱘᱙꘠꘡꘢꘣꘤꘥꘦꘧꘨꘩꣐꣑꣒꣓꣔꣕꣖꣗꣘꣙꤀꤁꤂꤃꤄꤅꤆꤇꤈꤉꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙0123456789

如果只需要可解析的数字,则还应该在正则表达式中使用[0-9]而不是\\d

您还可以使用技巧将字符串.Split到角色上,然后.Join其重新加入。 这不仅可以删除一个或多个字符,还可以用其他字符替换它。 我使用此技巧从文件名中删除不正确的字符:

string.Join("-", possiblyIncorrectFileName.Split(Path.GetInvalidFileNameChars()))

此代码会将无法在有效文件名中使用的任何字符替换为-

如果给定索引处的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); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM