C# 如何将数字替换为#

C# 如何将数字替换为#,c#,asp.net,C#,Asp.net,嗨,我有一个8位数的帐号。如何循环使用它并将数字替换为#并仅显示最后一位数字?您可以使用Regex.replace acct = Regex.Replace(acct, @"\d{7}", "#######"); var input = "12345678"; var pattern = new Regex(@"\d{7}"); var result = pattern.Replace(input, "#######"); 在您的账号中替代“01234567” 不过,

嗨,我有一个8位数的帐号。如何循环使用它并将数字替换为#并仅显示最后一位数字?

您可以使用
Regex.replace

acct = Regex.Replace(acct, @"\d{7}", "#######");
    var input = "12345678";
    var pattern = new Regex(@"\d{7}");
    var result = pattern.Replace(input, "#######");
在您的账号中替代
“01234567”

不过,这样做可能会更快

var result = "#######" + acct.Substring(7)
(其中,
acct
是作为字符串的帐号-如果它是
int
,则使用
acct.ToString().Substring(7)

如果您能保证帐户长度为8个字符。

int number = 12345678;
String strNumber = number.ToString();
String result = "#######" + strNumber[strNumber.Length - 1];
将String类的新实例初始化为指定的值 由指定的Unicode字符重复指定的次数


8位数字-显示最后1位

string acctNumber = "12345678".Substring(7, 1).PadLeft(8, '#');
ToString()也是一个不错的选择:

acctNumber.ToString("\\#\\#\\#\\#\\#\\#\\#0");

您可以将数字格式化为字符串,然后使用
string从字符串中删除前7个字符。删除(0,7)
然后在前面加上“####”。例如:


如果账号为
int

int accountNumber = 12345678;
String result = "#######" + accountNumber .ToString()[7];
正如建议的那样。但是如果账号是
字符串

string accountNumber = "12345678";
string result = "#######" + acc.ToCharArray()[accountNumber.Length - 1];


请提供您到目前为止尝试过的方法。我在visual studio中查看了Salt hash,但我很好奇是否有人有更好的方法来处理此问题?您可以将该帐号作为字符串,并可以使用string.Replace方法…输入的是数字12345678,但其中有大量答案;-)这是我的,基于正则表达式和负前瞻:var reg=new System.Text.RegularExpressions.regex(@“\d(?!$)”);var maskedNumber=reg.Replace(NumberFieldDescriptor,“#”);如果这是静态方法,
input
先进行,然后是
pattern
@AndrasZoltan,更正,谢谢<代码>Regex.Replace(“12345678”,@“^\d{7}”,”您好,一旦我将其全部散列,它将在Acct Num完成后立即显示:#。你在找一个蒙面的输入框。@ScottAtkinson-bah?如果您以后需要使用该号码,那么根据定义,您不能在删除号码后将其取回-您需要将其存储在其他地方,而不进行掩盖。对不起,我应该更具体一点,我为这一冲突道歉。这与Tims的回答相同,@AshBurlaczenko仔细阅读了我给出的答案,如果账号是字符串,因为OP没有提到它是INT,谁来计算
更好
新字符串(''.''',7)
:)你可以使用string.Format(“######{0}”,number.ToString()[7])为了提高效率。@ChrisGessler:为什么
string.Format
应该更有效?“.NET中的字符串”是一个很长的讨论,但简短的回答是string.Format()使用了StringBuilder。我相信您的示例创建了5个新字符串(可能是4个)。@ChrisGessler:默认情况下
String.Concat
(+)复制指针并进行了大量优化。在.NET中,使用String.Format或StringBuilder比使用简单的
strc=stra+strb
要快,这是一个神话。经过一些阅读,我发现String.Concat(+)现在使用“StringBuilder”根据每个字符串的组合长度预先分配生成器。我认为最好在PadLeft中使用acctNumber.Lenght+1用于使用PadLeft()@hamad-通常是的,但在本例中我使用了方法链接,因此我认为acctNumber的当前长度应该是1。“使用未分配的局部变量…”这不是一个错误吗?@hamad-您缺少点-子字符串(7,1)。PadLeft(8,“#”)是这里的重要部分。OP是怎么来的,不确定,问题中没有提到。
        int accNumber = 10085697;

        string strAccountNumber=accNumber.ToString();

        string truncatedAccountNumber="#######"+strAccountNumber.Remove(0,7);
int accountNumber = 12345678;
String result = "#######" + accountNumber .ToString()[7];
string accountNumber = "12345678";
string result = "#######" + acc.ToCharArray()[accountNumber.Length - 1];