高手们,求格式字符串的简单方法。。

时间:2023-02-12 19:35:16
12333 -> 1233-3XXX-XXXX-XXXX
12    --> 12XX-XXXX-XXXX-XXXX
2222333344445555666 ->2222-3333-4444-5555
要求如上,
四位中间加横杆,不足的用X代替。 
出来的总共19(算上横杆)。

请问有简单方法取得嘛?

18 个解决方案

#1


没高手了

#2


自已写啊,这个容易

#3


有没简单的方法?最好不好太多判断语句的

说简单你回答干嘛?鄙视

#4


来位高手帮下吧

#5


这么简单的,没人我要接贴了。。。
我要的最好是一个.net库函数就能搞定的。。。。。

#6


这个还不简单
<script language=vbscript>
Str="2222333344445555666"

Tstr=""
for i = 1 to 19
M = M + 1
If Mid(Str,i,1) <> "" THEN
Tstr=Tstr + Mid(Str,i,1)
N = N + 1
Else
Tstr = Tstr + "#"
End If
IF M mod 4 = 0 THEN
Tstr=Tstr + "-"
ENd iF
NExt
alert(Tstr)
</script>

#7


for i = 1 to 19
我是根据你给出例子的规律来算的

#8


Sorry,上面有误
<script language=vbscript>
Str="2222333344445555666"

Tstr=""
for i = 1 to 16
M = M + 1
If Mid(Str,i,1) <> "" THEN
Tstr=Tstr + Mid(Str,i,1)
N = N + 1
Else
Tstr = Tstr + "#"
End If
IF M mod 4 = 0 THEN
Tstr=Tstr + "-"
ENd iF
NExt
alert(Left(Tstr,Len(Tstr)-1))
</script>

#9


有没更简单的方法?

#10


private string GetFormatString(string code)
{
if(code==null || code.Length==0)
{
return "";
}

while(code.Length<16)
{
code=code+"X";
}
if(code.Length>16)
{
code=code.Substring(0,16);
}
int i=1;
int j=0;
while(code.Length<19)
{
code=code.Insert(4*i+j,"-");
i++;
j++;
}
return code;

}

#11


不够精~~~

#12


你想要多精?

#13


10个语句内,最好一个格式化函数就搞定!

#14


//可以完全满足你的要求,已经测试难过,不过代码有点杂乱
string A(string str)
{
   return string.Format("{0}-{1}-{2}-{3}",(str.Length>=4)?str.Substring(0,4):str.PadRight(4,'X'),
      (str.Length>=8)?str.Substring(4,4):((str.Length>=4)?str.Substring(4):"").PadRight(4,'X'),
      (str.Length>=12)?str.Substring(8,4):((str.Length>=8)?str.Substring(8):"").PadRight(4,'X'),
      (str.Length>=16)?str.Substring(12,4):((str.Length>=12)?str.Substring(12):"").PadRight(4,'X'));
}

#15


//测试通过,sorry,打错了

#16


...谢谢先...

#17


没有更精简的方法,这样看着还是有点复杂

#18


for i=0 to 15-CardNo.length
 CardNo &="X"
next
cardNo=CardNo.insert(4,"-")
cardNo=CardNo.insert(9,"-")
cardNo=CardNo.insert(14,"-")
return cardNo.substring(0,19)

#1


没高手了

#2


自已写啊,这个容易

#3


有没简单的方法?最好不好太多判断语句的

说简单你回答干嘛?鄙视

#4


来位高手帮下吧

#5


这么简单的,没人我要接贴了。。。
我要的最好是一个.net库函数就能搞定的。。。。。

#6


这个还不简单
<script language=vbscript>
Str="2222333344445555666"

Tstr=""
for i = 1 to 19
M = M + 1
If Mid(Str,i,1) <> "" THEN
Tstr=Tstr + Mid(Str,i,1)
N = N + 1
Else
Tstr = Tstr + "#"
End If
IF M mod 4 = 0 THEN
Tstr=Tstr + "-"
ENd iF
NExt
alert(Tstr)
</script>

#7


for i = 1 to 19
我是根据你给出例子的规律来算的

#8


Sorry,上面有误
<script language=vbscript>
Str="2222333344445555666"

Tstr=""
for i = 1 to 16
M = M + 1
If Mid(Str,i,1) <> "" THEN
Tstr=Tstr + Mid(Str,i,1)
N = N + 1
Else
Tstr = Tstr + "#"
End If
IF M mod 4 = 0 THEN
Tstr=Tstr + "-"
ENd iF
NExt
alert(Left(Tstr,Len(Tstr)-1))
</script>

#9


有没更简单的方法?

#10


private string GetFormatString(string code)
{
if(code==null || code.Length==0)
{
return "";
}

while(code.Length<16)
{
code=code+"X";
}
if(code.Length>16)
{
code=code.Substring(0,16);
}
int i=1;
int j=0;
while(code.Length<19)
{
code=code.Insert(4*i+j,"-");
i++;
j++;
}
return code;

}

#11


不够精~~~

#12


你想要多精?

#13


10个语句内,最好一个格式化函数就搞定!

#14


//可以完全满足你的要求,已经测试难过,不过代码有点杂乱
string A(string str)
{
   return string.Format("{0}-{1}-{2}-{3}",(str.Length>=4)?str.Substring(0,4):str.PadRight(4,'X'),
      (str.Length>=8)?str.Substring(4,4):((str.Length>=4)?str.Substring(4):"").PadRight(4,'X'),
      (str.Length>=12)?str.Substring(8,4):((str.Length>=8)?str.Substring(8):"").PadRight(4,'X'),
      (str.Length>=16)?str.Substring(12,4):((str.Length>=12)?str.Substring(12):"").PadRight(4,'X'));
}

#15


//测试通过,sorry,打错了

#16


...谢谢先...

#17


没有更精简的方法,这样看着还是有点复杂

#18


for i=0 to 15-CardNo.length
 CardNo &="X"
next
cardNo=CardNo.insert(4,"-")
cardNo=CardNo.insert(9,"-")
cardNo=CardNo.insert(14,"-")
return cardNo.substring(0,19)