有什么价值? C#(添加数字表示为字符串)

时间:2008-10-16 16:47:28

标签: c# algorithm

如果我有一个字符串(010)并且我想向它添加1(011)我应该使用什么值类型将此字符串转换为用于添加的数字,同时保留整数而不是10 + 1 = 11.

10 个答案:

答案 0 :(得分:15)

您可以使用以下内容:

string initialValue = "010";
int tempValue = Int.Parse(initialValue) + 1;
string newValue = tempValue.ToString("000");

您可以正常进行数学运算,然后使用.ToString()

的数字格式设置功能将字符串恢复为之前的格式

答案 1 :(得分:5)

if (int.TryParse(str, out i))
    str = (i + 1).ToString("000");

HTH。

编辑:解决了BoltBait和steffenj指出的问题)

答案 2 :(得分:3)

看起来你正在尝试使用编码为字符串的二进制数字(嗯。也许在visual studio中有一个clippy的地方)。您可以使用Convert()方法为您执行此操作。 2用于表示base-2格式。如果您需要将字符串设置为特定大小,则可能必须添加零填充。

string s = "010";
s = Convert.ToString(Convert.ToInt32("010", 2) + 1, 2);

答案 3 :(得分:1)

好吧,你总是可以创建自己的结构,其中包含int和所需的输出长度(基于输入长度)。或者只是暂时记住它,如下所示......这取决于你需要多久一次。

string ParseAndAdd(string text, int add)
{
    int parsed = int.Parse(text);
    return (parsed + add).ToString().PadLeft(text.Length, '0');
}

答案 4 :(得分:1)

int value = 10;// or, int value = Convert.ToInt32("010");
value += 1;
string text = value.ToString("000");

ToString调用中的“000”称为format string。它告诉.net如何打印出数字。在这种情况下,字符“0”表示对于此位置的数字,如果不显示该数字,则应显示零。

答案 5 :(得分:1)

尝试这样的事情:

string a = "010";
string b = "1";
a = (int.Parse(a) + int.Parse(b)).ToString(new string('0', Math.Max(a.Length, b.Length)));
Console.WriteLine(a);

这允许处理a和b字符串的任意长度。

答案 6 :(得分:1)

string str = "110";
int i = 0;
int maxSize = 3;
if (int.TryParse(str, out i))
{
    str = string.Concat(new string('0', maxSize - (i + 1).ToString().Length), i + 1);
}

答案 7 :(得分:1)

我是这样做的:

    public string AddOne (string text)
    {
        int parsed = int.Parse(text);
        string formatString = "{0:D" + text.Length + "}";
        return string.Format(formatString, parsed + 1);
    }

通过将输入文本的长度放入格式字符串中,可以确保结果字符串与输入的长度相同。

根据您的需要,您可能需要围绕int.Parse进行异常处理。我以为我会让异常冒泡,因为int.Parse引发的异常(ArgumentException或ArgumentNullException)与我在方法中抛出的异常相同。

答案 8 :(得分:0)

是否可以始终确保有三位数?

所以,你会像往常一样进行数学计算,但是如果需要的话,可以创建一个将额外的零附加到前面的函数?

答案 9 :(得分:0)

它看起来像字符串上的二进制操作, 我认为你应该创建一个BinaryString类,它应该有内部二进制到十进制转换,然后重载+-等,并在里面进行十进制操作。并将结果输出为二进制字符串。