求大佬指点

扯大皮的鸡 2019-05-14 07:29:26
若干个函数, 在主函数中分别调用这些函数可以对一串无中文字 设计若干个函数, ①删除除空格、英文逗号、句号、问号、感叹号之外的所 有字符; ②两个英文单词之间的空格多于1个的,把多余的删去; ③检测每句首字母是否为大写字母,若不是,将其转换为大写字 母; ④检测句中除首字母外是否有大写字母,若有,将其转化为小写 字母。 要求选手直接复制如下参考字符串 i &* lik^^e c proGram,How ab//out you?iT is i++N@Ter@e**stinG.leTUSLearnittogethe]]r! 至运行框,输出如下字符: Ilikecprogram,howaboutyou?Itisinteresting.Letuslearnittogether!
...全文
88 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
扯大皮的鸡 2019-05-14
  • 打赏
  • 举报
回复
求大神指点啊啊啊啊啊啊
ダ雨夹雪リ 2019-05-14
  • 打赏
  • 举报
回复


DECLARE @A VARCHAR(1000)='
i
&*
lik^^e
c
proGram, How
ab//out
you?iT
is
i++N@Ter@e**stinG.leTUSLearnittogethe]]r!'

--正则表达式+首字母大写函数
SELECT dbo.Capit( dbo.Reg_Replace(@A,'([^,.?!|a-z|A-Z])',''))

--编程,你改成你的语言吧
DECLARE @I INT=1 --记录字符位置
DECLARE @T BIT =1 --判断是否需要大写
DECLARE @C CHAR(1) --保存第i个字符
DECLARE @rst VARCHAR(1000)='' --保存结果

WHILE @I<=LEN(@A) --从第一个到最后一个字符开始循环
BEGIN
SET @C=SUBSTRING(@A,@I,1) --取第i个字符
IF (@C>='A' AND @C<='Z') OR @C IN(',','.','?','!') --判断,需要保留的字符(sql不区分大小写)
BEGIN
IF @T =1 --如果需要就转换大写,否则转换小写
SET @C=UPPER(@C)
ELSE
SET @C=LOWER(@C)
SET @rst=@rst+@C
IF @C IN(',','.','?','!') --判断下一个字符是否大写
SET @T=1
ELSE
SET @T=0
END
SET @i=@i+1 --字符位置+1
END
SELECT @rst --输出结果


22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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