我试图string用*(星号)掩盖名称,并排除第一个和第n个(第5个)字符。
例:
UserFirstName-> U **** F *******
我设法排除的第一个字符用(?!^).用
var regex = new Regex("(?!^).");
var result = regex.Replace(stringUserName, "*");
Run Code Online (Sandbox Code Playgroud)
输出:
UserFirstName-> U ************
我还如何排除第5位的角色?
您可以使用
(?!^)(?<!^.{4}).
Run Code Online (Sandbox Code Playgroud)
图案细节
(?!^)-(等于(?<!^)您可以替代使用lookbehind)在字符串开始位置失败的否定超前(?<!^.{4}) -如果在字符串的开始位置紧靠当前位置的左侧,除了换行符之外还有其他四个字符,则负向后寻找将使匹配失败. -除换行符外的任何单个字符。C#演示:
string text = "UserFirstName";
int SkipIndex = 5;
string pattern = $@"(?!^)(?<!^.{{{SkipIndex-1}}}).";
Console.WriteLine(Regex.Replace(text, pattern, "*"));
Run Code Online (Sandbox Code Playgroud)
输出: U***F********