2017-06-03 129 views
0

我有一个视图,拉出数据库中的所有内容的列表,它效果很好。然而,我必须掩饰一点信息,无论我尝试什么,我都无法掩饰它。在ViewModel中的掩码字符串C#

我想用5 *(不管字符串多长时间)掩盖它并显示最后4位数字。

任何想法与我有什么完成此最佳方法?

字符串例子: “SD46346” & & “ADFF3342422” & & “56 AS4566S”

控制器

vm.Accounts = accounts 
     .Select(s => new AdminViewModel.Account 
     { 
      Id= (s._ID.Length > 40 ? Encryptor.Decrypt(s._ID) : s._ID), 
     }).ToList(); 
    return View(vm); 

视图模型

public List<Account> Accounts { get; set;} 

public class Account 
{ 
    public string Id { get; set; } 
} 

我试过的东西:'/ xxxxx'应用程序中的服务器错误。 StartIndex不能小于零。参数名:的startIndex -

public string DisplayID 
{ 
    get 
    { 
     return string.Format("*****{0}", Id.Substring(Id.Length - 4)); 
    } 
} 

UPDATE

这不是我的代码,它是在数据库中,只有有2个字符丢失旧数据。

+0

字符串的后样本。大概可以使用正则表达式。 – jdweng

+0

好吧,我现在要做的 – CheezStix

+0

具有负指数的子串只会抓住最后n个字符 - 您不需要字符串的长度。 –

回答

0

如果您只是在简单替换显示之后,还可以添加一个用于显示的额外属性。

string ID {get;set;} 

string DisplayID 
{ 
    get 
    { 
     return string.Format("*****{0}", ID.substring(ID.Length - 4)) 
    } 
} 
+0

'/ xxxxx'应用程序中的服务器错误。 StartIndex不能小于零。 参数名称:startIndex – CheezStix

+0

总是很好地检查字符串长度超过你想要的。看起来你比4更短的字符串长度。 – touchofevil

0

不知道我理解字符串(双引号和&符号),但您应该可以根据需要修改代码。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Text.RegularExpressions; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string input = "SD46346\" && \"ADFF3342422\" && \"56-AS4566S"; 
      string pattern = @"\d{4}"; //exactly four digits in a row 
      Match match = Regex.Match(input, pattern, RegexOptions.RightToLeft); 

      string output = match.Value; 
     } 
    } 
} 
+0

如何将输出值拉到我的视图中? – CheezStix

+0

您将需要一个类Account的实例。 – jdweng