我正在尝试使用正则表达式对字符串做一些工作,但我遇到了一些困难。我的目标是用字符替换字符串中的数字,特别是如果字符串中有一组数字我想用*
替换整个数字组。如果只有一个数字,我想用?
替换它。
例如,如果我有字符串“test12345.txt”,我想把它变成“test * .txt”,但如果我有“test1.txt”,我想把它变成“测试? 。文本”。
我试过
Regex r = new Regex(@"\d+", RegexOptions.None);
returnString = r.Replace(returnString, "*");
但是这个替换用一个*
答案 0 :(得分:15)
string input = "test12345.txt";
// replace all numbers with a single *
string replacedstar = Regex.Replace( input, "[0-9]{2,}", "*" );
// replace remaining single digits with ?
string replacedqm = Regex.Replace( input, "[0-9]", "?" );
答案 1 :(得分:3)
这样做,首先它将匹配两个以上的数字并用*
替换整个块,如果有单个数字则替换第二个语句,它将替换为?
'
var newFileName = Regex.Replace(fileName, @"\d{2,}", "*");
newFileName = Regex.Replace(fileName, @"\d", "?");
希望这有帮助。
答案 2 :(得分:2)
使用两个正则表达式执行此操作:
\d{2,}
替换为*
,\d
替换为?
。答案 3 :(得分:2)
static string ReplaceNumbers(string text)
{
string output = Regex.Replace(text, @"\d{2,}", "*");
output = Regex.Replace(output, @"\d", "?");
return output;
}
答案 4 :(得分:0)
int n1 = Convert.ToInt32(number.Text);
int n2 = Convert.ToInt32(replace.Text);
int n3 = Convert.ToInt32(othernumber.Text);
int temp;
int result = 0;
int i = 1;
while (n1 > 0)
{
temp = n1 % 10;
if (n2 == temp)
{
result += n3 * i;
}
else
{
result = result + temp * i;
}
i *= 10;
n1 = n1 / 10;
}
afterswap.Text = Convert.ToString(result);