日期:2014-05-18  浏览次数:20386 次

承认你是高手就进来(关于字符串分割换行)
现在有一段字符串,

如 "R10,R11,R12,R103,R105,R136,R137,R158,R169,R20,R21,R22,R23,R24 "(格式都是以逗号分开的),一个R代表一个点位.

我的要求是20个字符一行,大于20个字符则换行,如果第20个字符刚好在换行时被分割了,则将这整个点换行,
我希望得到以下结果:
R10,R11,R12,R103,
R105,R136,R137,R158,
R169,R20,R21,R22,
R23,R24
而不是得到
R10,R11,R12,R103,R10
5,R136,R137,R158,R16
9,R20,R21,R22,R23,R2
4

请高手指点.......

------解决方案--------------------
declare @s varchar(80)
set @s= 'R10,R11,R12,R103,R105,R136,R137,R158,R169,R20,R21,R22,R23,R24 '

declare @i int
while len(@s)> 20
begin
set @i=20-charindex( ', ',REVERSE(left(@s,20)))+1
print left(@s,@i)
set @s=stuff(@s,1,@i, ' ')
end
print @s


--结果
R10,R11,R12,R103,
R105,R136,R137,R158,
R169,R20,R21,R22,
R23,R24