将字符串向左移动

时间:2012-09-18 09:27:17

标签: c#

我们有一个字符串:0000029653。如何将数字移动一些值。
例如,移动4然后结果必须是:0296530000 有这个操作员或功能吗?
感谢

5 个答案:

答案 0 :(得分:4)

您可以将其转换为数字然后执行此操作:

Result = yournumber * Math.Pow(10, shiftleftby);

然后将其转换回字符串并用0s填充左侧

答案 1 :(得分:2)

如果您不想使用子字符串和索引,您也可以使用Linq:

string inString = "0000029653";
var result = String.Concat(inString.Skip(4).Concat(inString.Take(4)));

答案 2 :(得分:1)

    public string Shift(string numberStr, int shiftVal)
    {
        string result = string.Empty;

        int i = numberStr.Length;
        char[] ch = numberStr.ToCharArray();
        for (int j = shiftVal; result.Length < i; j++)
            result += ch[j % i];

        return result;
    }

答案 3 :(得分:0)

您可以将数字转换为字符串并返回。

String number = "0000029653";
String shiftedNumber = number.Substring(4);

答案 4 :(得分:0)

下面的方法取数字n,它表示你想要移动/旋转字符串的次数。如果数字大于字符串的长度,我按字符串的长度取MOD。

public static void Rotate(ref string str, int n)
    {
        if (n < 1)
            throw new Exception("Negative number for rotation"); ;
        if (str.Length < 1) throw new Exception("0 length string");

        if (n > str.Length) // If number is greater than the length of the string then take MOD of the number
        {
            n = n % str.Length;
        }

        StringBuilder s1=new StringBuilder(str.Substring(n,(str.Length - n)));
        s1.Append(str.Substring(0,n));
        str=s1.ToString();


    }

///You can make a use of Skip and Take functions of the String operations
     public static void Rotate1(ref string str, int n)
    {
        if (n < 1)
            throw new Exception("Negative number for rotation"); ;
        if (str.Length < 1) throw new Exception("0 length string");

        if (n > str.Length)
        {
            n = n % str.Length;
        }

        str = String.Concat(str.Skip(n).Concat(str.Take(n)));

    }