请教一正则表达式 字符A1 我要替换为A0001 ,BA2 替换为BA002,ABCDE替换为ABCDE

dragonsuc 2008-01-23 01:12:31
请教一正则表达式 字符A1 我要替换为A0001 ,BA2 替换为BA002,ABCDE替换为ABCDE,A1234替换为A1234
...全文
123 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Q_282898034 2008-01-23
  • 打赏
  • 举报
回复
测试:
using System;
using System.Text.RegularExpressions;

public class Program
{
static string GetString(string input, int n)
{
return Regex.Replace(input.PadLeft(n, '0'), @"(0*)(\D*)(\d*)", "$2$1$3");
}

public static void Main()
{
string[] str ={ "A1", "BA2", "ABCDE", "A1234", "A", "123", "12345" };
foreach (string input in str)
Console.WriteLine("{0,10}{1,10}", input, GetString(input, 5));
Console.Read();
}
}


结果:

        A1     A0001
BA2 BA002
ABCDE ABCDE
A1234 A1234
A A0000
123 00123
12345 12345
Q_282898034 2008-01-23
  • 打赏
  • 举报
回复
改进了下,这个答案比较正规
using System;
using System.Text.RegularExpressions;

public class Program
{
static string GetString(string input, int n)
{
return Regex.Replace(input.PadLeft(n, '0'), @"(0*)(\D*)(\d*)", "$2$1$3");
}

public static void Main()
{
string output = GetString("12345", 5);
Console.WriteLine(output);
Console.Read();
}
}
Q_282898034 2008-01-23
  • 打赏
  • 举报
回复
我这个经过测试了
using System;
using System.Text.RegularExpressions;

public class Program
{
public static void Main()
{
string input = "AB12";
string str = "00000".Substring(input.Length);
string result = Regex.Replace(input, @"(?'a'[\D]+)(?'b'[\d]+)", "${a}" + str + "${b}");
Console.WriteLine(result);
Console.Read();
}
}
dragonsuc 2008-01-23
  • 打赏
  • 举报
回复
谢谢 我测试后给分
he_8134 2008-01-23
  • 打赏
  • 举报
回复
public static string Buwei(string input,int count){
string str="";
int n=count-input.Length;
if(n<=0)return input;
for(int i=0;i<n;i++)str+="0";
return Regex.Replace(input,@"^([a-zA-Z]+)(\d+)$",strin.Format("$1{0}$2",str));
}
fancystyle 2008-01-23
  • 打赏
  • 举报
回复

public static void Main(string[] args)
{

string s = "A1 BA2 ABCDE";
s = Regex.Replace(s,@"(\w+)",new MatchEvaluator(CorrectString),RegexOptions.Compiled|RegexOptions.IgnoreCase);
Console.WriteLine(s);
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
public static string CorrectString(Match match)
{
string matchValue=match.Value;
string appendStr=string.Empty;
if(matchValue.Length<5)
{
int diff=5-matchValue.Length;
appendStr=string.Empty;
while(diff>0)
{
appendStr+="0";
diff--;
}
}
matchValue=matchValue.Insert(matchValue.Length-1,appendStr);
return matchValue;
}



输出:
A0001 BA002 ABCDE
Q_282898034 2008-01-23
  • 打赏
  • 举报
回复
不足 5 位的补齐 5 位,在字母和数字中间加零。这个可以用正则实现?
螃蟹大虾 2008-01-23
  • 打赏
  • 举报
回复
呵呵,判断 数字位数 小于4的前面补0 ...补足4位
he_8134 2008-01-23
  • 打赏
  • 举报
回复
请教一正则表达式 字符A1 我要替换为A0001 ,BA2 替换为BA002,ABCDE替换为ABCDE,A1234替换为A1234

我没眼花吧?
scyinhui 2008-01-23
  • 打赏
  • 举报
回复
把A1替换成A0001可以用Left("A1",1)+"000"+Right("A1",1);BA2替换为BA002可以用:Left("BA2",2)+"00"+Right("BA2",1);后面两上变都没有变怎么替换啊?
wangkun9999 2008-01-23
  • 打赏
  • 举报
回复
有什么规律?

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧