字符串反转reverse

我们有一串字符串,比如:

DECLARE @Source VARCHAR(MAX)= ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ‘

现想把它反转显示:

ZYXWVUTSRQPONMLKJIHGFEDCBA

此时,你可以写一个方法来处理:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:      Insus.NET
-- Create date: 2019-05-16
-- Update date: 2019-05-16
-- Description: 反转字符
CREATE FUNCTION [dbo].[svf_ReverseString] (
     @Source VARCHAR(MAX)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
   DECLARE @Destination VARCHAR(MAX) = ‘‘
    WHILE LEN(@Source) > 0
        BEGIN
        IF LEN(@Source) = 0
        BEGIN
            SET @Destination = @Source + @Destination
            SET @Source = ‘‘
        END
        ELSE
        BEGIN
            SET @Destination = SUBSTRING(@Source, 1, 1) + @Destination
            SET @Source = SUBSTRING(@Source, 2, LEN(@Source))
        END
    END

RETURN @Destination
END
GO

Source Code

举例运行上面的方法:

哈哈,一切都是白忙,因为Microsoft 已经提供有一个现型的方法REVERSE:

以上不管是哪一个方法,对下面这种情况进行反转,不知是否OK? 字符串以空格为单词进行反转。

因此,得写另外一个方法来处理:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:      Insus.NET
-- Create date: 2019-05-16
-- Update date: 2019-05-16
-- Description: 反转函数
CREATE FUNCTION [dbo].[svf_Reverse] (
     @Source VARCHAR(MAX)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
    DECLARE @Destination VARCHAR(MAX) = ‘‘

    WHILE LEN(@Source) > 0
      BEGIN
        IF CHARINDEX(‘ ‘, @Source) > 0
        BEGIN
            SET @Destination = SUBSTRING(@Source, 0, CHARINDEX(‘ ‘, @Source)) + ‘ ‘ + @Destination
            SET @Source = LTRIM(RTRIM(SUBSTRING(@Source, CHARINDEX(‘ ‘, @Source) + 1, LEN(@Source))))
        END
        ELSE
        BEGIN
            SET @Destination = @Source + ‘ ‘ + @Destination
            SET @Source = ‘‘
        END
      END
RETURN @Destination
END
GO

Source Code

原文地址:https://www.cnblogs.com/insus/p/10878806.html

时间: 2024-10-18 10:25:17

字符串反转reverse的相关文章

003实现字符串反转reverse

这个简单就直接代码了 //写代码翻转一个C风格的字符串.(C风格的意思是"abcd"需要用5个字符来表示,包含末尾的 结束字符) #include <stdio.h> #include <string.h> void swap(char& vLeft, char& vRight) { char Temp = vLeft; vLeft = vRight; vRight = Temp; } char* reverse(char* vStr) { if

使用SQL字符串反转函数REVERSE巧妙实现lastindexof功能

要实现一个简单的业务: 使用SQL脚本获取字符串'large/020700/61970b0101.jpg' 中的'61970b0101.jpg'部分. 先想到的是C#中的lastindexof,但是SQL中没有这个函数,只有charindex函数,只好使用现有资源想办法曲线解决了. 解决思路: 1.使用REVERSE函数将字符串反转 2.使用charindex找到第一个出现'/'的位置 3.使用left函数找到'/'之前的字符串 4.再次使用REVERSE函数将处理过的字符串反转 具体示例: D

[C/C++] String Reverse 字符串 反转

#include <iostream> #include <string> #include <algorithm> #include <cstring> inline void STL_Reverse(std::string& str) // 反转string字符串 包装STL的reverse() 可以inline { reverse(str.begin(), str.end()); // STL 反转函数 reverse() 的实现 /* tem

字符串反转方法汇总

split()方法将一个字符串对象的每个字符拆出来,并且将每个字符串当成数组的每个元素 reverse()方法用来改变数组,将数组中的元素倒个序排列,第一个数组元素成为最后一个,最后一个变成第一个 join()方法将数组中的所有元素边接成一个字符串 来看个实例: 1 function reverseString(str) { 2 // 第一步,使用split()方法,返回一个新数组 3 // var splitString = "hello".split("");

Java实现字符串反转

对于使用Java字符串反转有以下几种实现: 利用StringBuilder类中的reverse函数: 使用递归,将String的首字符放到除首字符外的子串后,然后再递归调用子串: 使用字符数组做reverse: public class Reverse { public static String reverse1(String str) { if (str == null || str.length() <= 1) return str; return new StringBuilder(st

Java基础知识强化46:StringBuffer类之字符串反转的案例

1. 案例演示: 1 package cn.itcast_07; 2 3 import java.util.Scanner; 4 5 /* 6 * 把字符串反转 7 */ 8 public class StringBufferTest3 { 9 public static void main(String[] args) { 10 // 键盘录入数据 11 Scanner sc = new Scanner(System.in); 12 System.out.println("请输入数据:&quo

关于字符串反转的几种方法的比较

下面先上代码: class Program { static void Main(string[] args) { string str = "12345"; const int count = 10000; Stopwatch sw = Stopwatch.StartNew(); for (int i = 0; i < count; i++) { Reverse1(str); } Console.WriteLine("Reverse1耗时: {0}", sw

关于字符串反转和数组反转的问题

关于反转这个问题,在晚上查了些资料,有很多非常不错的思想,要熟练的掌握这些思想,现在把这些总结如下: 字符串反转: 1 import java.util.Stack; 2 3 public class StringInverse { 4 public static void main(String[] args) { 5 System.out.println(reverse7("abcde")); 6 } 7 //方式一 8 public static String reverse1(

将字符串反转,但单词不倒置。Right here waiting for you! -&gt; you! for waiting here Right

//将字符串反转,但单词不倒置. #include<stdio.h> #include<string.h> void reverse(char *s) { char data[255][255];//将s中的空格和非空格子串进行存储 int row = 0,column = 0; int i,j,k; for(i=0;s[i];) { data[row][column] = s[i]; column++; //找到了空格子串的开头 if(s[i] == ' ') { i++; if