我们有一个字符串:0000029653
. 如何将数字移动某个值。
例如,移位 4 则结果必须是:0296530000
有运算符或函数吗?
谢谢
问问题
3931 次
5 回答
4
您可以将其转换为数字,然后执行以下操作:
Result = yournumber * Math.Pow(10, shiftleftby);
然后将其转换回字符串并用 0 向左填充
于 2012-09-18T09:32:01.530 回答
2
如果您不想使用子字符串和索引,也可以使用 Linq :
string inString = "0000029653";
var result = String.Concat(inString.Skip(4).Concat(inString.Take(4)));
于 2012-09-18T11:59:03.810 回答
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;
}
于 2012-09-18T09:38:21.607 回答
0
您可以将您的数字作为整数转换为字符串并返回。
String number = "0000029653";
String shiftedNumber = number.Substring(4);
于 2012-09-18T09:31:36.137 回答
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)));
}
于 2013-09-15T18:32:46.810 回答