您的位置:程序门 -> .net技术 -> c#



请教一正则表达式 字符a1 我要替换为a0001 ,ba2 替换为ba002,abcde替换为abcde


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请教一正则表达式 字符a1 我要替换为a0001 ,ba2 替换为ba002,abcde替换为abcde
发表于:2008-01-23 13:12:31 楼主
请教一正则表达式   字符a1   我要替换为a0001   ,ba2   替换为ba002,abcde替换为abcde,a1234替换为a1234
发表于:2008-01-23 14:39:531楼 得分:0
有什么规律?
发表于:2008-01-23 14:50:292楼 得分:0
把a1替换成a0001可以用left("a1",1)+"000"+right("a1",1);ba2替换为ba002可以用:left("ba2",2)+"00"+right("ba2",1);后面两上变都没有变怎么替换啊?
发表于:2008-01-23 15:04:123楼 得分:0
请教一正则表达式       字符a1       我要替换为a0001       ,ba2       替换为ba002,abcde替换为abcde,a1234替换为a1234

我没眼花吧?
发表于:2008-01-23 16:09:524楼 得分:0
呵呵,判断   数字位数     小于4的前面补0   ...补足4位
发表于:2008-01-23 16:44:305楼 得分:0
不足   5   位的补齐   5   位,在字母和数字中间加零。这个可以用正则实现?
发表于:2008-01-23 17:07:136楼 得分:0
c# code
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  
发表于:2008-01-23 17:13:447楼 得分:0
c# code
public static string buwei(string input,int count){ string str=""; int n=count-input.length; if(n<=0)return input; forint i=0;i<n;i++)str+="0"; return regex.replace(input,@"^([a-za-z]+)(\d+)$",strin.format("$1{0}$2",str)); }
发表于:2008-01-23 17:49:218楼 得分:0
谢谢     我测试后给分
发表于:2008-01-23 18:17:399楼 得分:0
我这个经过测试了
c# code
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(); } }
发表于:2008-01-23 19:09:3710楼 得分:0
改进了下,这个答案比较正规
c# code
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(); } }
发表于:2008-01-23 19:15:1411楼 得分:0
测试:
c# code
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" }; foreachstring input in str) console.writeline("{0,10}{1,10}", input, getstring(input, 5)); console.read(); } }


结果:

c# code
a1 a0001 ba2 ba002 abcde abcde a1234 a1234 a a0000 123 00123 12345 12345


快速检索

最新资讯
热门点击