C# 如何插入'-';在我手里?

C# 如何插入'-';在我手里?,c#,string,C#,String,我有一个看起来像这样的字符串:12345,这个123456或者这个:1234567 我希望使每个字符串如下所示:123-45,此:1234-56或此:12345-67 我怎样才能在C#中做到这一点 编辑:添加了基于注释的检查,但取决于应如何处理此类字符串。(例如,即使长度=2?)也是虚线) 这是假设您希望“-”在结尾处出现两个:-) 这可能很方便(未经测试) // ///接受一个字符串,并在 ///从终点到终点的指定距离 /// ///要修改的字符串 ///要插入的字符串 ///插入点 ///

我有一个看起来像这样的字符串:
12345
,这个
123456
或者这个:
1234567

我希望使每个字符串如下所示:
123-45
,此:
1234-56
或此:
12345-67

我怎样才能在C#中做到这一点

编辑:添加了基于注释的检查,但取决于应如何处理此类字符串。(例如,即使长度=2?)也是虚线)

这是假设您希望“-”在结尾处出现两个:-)

这可能很方便(未经测试)

//
///接受一个字符串,并在
///从终点到终点的指定距离
/// 
///要修改的字符串
///要插入的字符串
///插入点
/// 
受保护的字符串添加间隔符(字符串输入、字符串间隔符、int positionFromEnd)
{
string outputString=string.Empty;
如果(input.Length>=位置FromEnd)
{
outputString=input.Insert(input.Length-positionFromEnd,间隔符);
}
其他的
{
抛出新异常(“您尝试插入间隔棒的位置不存在”);
}
返回输出字符串;
}

看看String.Format(),我猜您需要类似于String.Format的东西(“{0:##-##},

使用相同corelibs的powershell示例

PS C:\Users\Phyx> [string]::Format("{0:##-##}",1234)
12-34
PS C:\Users\Phyx> [string]::Format("{0:##-##}",123445)
1234-45
PS C:\Users\Phyx> [string]::Format("{0:##-##}",12)
-12
PS C:\Users\Phyx> [string]::Format("{0:0#-##}",12)
00-12
PS C:\Users\Phyx> [string]::Format("{0:##-##}",122)
1-22

我假设您希望在字符串结尾前添加两个字符的破折号

string number = "12345";

if(number.Length > 2)
    string result = number.Insert(number.Length-2, "-");
else
    //error checking

你的意思是用a破折号,然后是最后两位数吗?是的,没错,丹尼尔。太棒了!我非常感激!这种方法的问题是它会对长度为True的字符串抛出异常。您可以添加一个简单的
if
语句
if(myString.Length>1)
来检查字符串是否有效。取决于OP是否会遇到此类字符串,如果是,则取决于如何处理这些字符串。这适用于数值,如果值已经是字符串,则不会对其进行任何处理,因为它已经是字符串。我假设OP已经将该值作为一个数值变量,或者他需要调用Parse或TryParse,这也将验证他的输入。
    /// <summary>
    /// Takes a string and and inserts a spacer character at 
    /// a specifed distance from the end
    /// </summary>
    /// <param name="input">string to modify</param>
    /// <param name="spacer">string to insert</param>
    /// <param name="positionFromEnd">insertion point</param>
    /// <returns></returns>
    protected string AddSpacer(string input, string spacer, int positionFromEnd)
    {
        string outputString = string.Empty;

        if (input.Length >= positionFromEnd)
        {
            outputString = input.Insert(input.Length - positionFromEnd, spacer);
        }
        else
        {
            throw new Exception("The position you tried to insert the spacer into doesn't exist");
        }

        return outputString;
    }
PS C:\Users\Phyx> [string]::Format("{0:##-##}",1234)
12-34
PS C:\Users\Phyx> [string]::Format("{0:##-##}",123445)
1234-45
PS C:\Users\Phyx> [string]::Format("{0:##-##}",12)
-12
PS C:\Users\Phyx> [string]::Format("{0:0#-##}",12)
00-12
PS C:\Users\Phyx> [string]::Format("{0:##-##}",122)
1-22
string number = "12345";

if(number.Length > 2)
    string result = number.Insert(number.Length-2, "-");
else
    //error checking