如何在字符串中插入" - "?

Kev*_*vin 2 c# string

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

我想让每个字符串看起来像这样:123-45这个:1234-56或者这个:12345-67.

我怎么能在C#中做到这一点?

key*_*rdP 13

string myString = "1234567";   
if(myString.Length > 1)
   string dashed = myString.Insert(myString.Length - 2, "-");
Run Code Online (Sandbox Code Playgroud)

编辑:根据评论添加检查,但取决于应如何处理此类字符串.(例如,即使长度= 2,也会破灭?)

  • 这种方法的问题是它会为长度<= 1的字符串抛出异常 (3认同)
  • 真正.你可以添加一个简单的`if`语句`if(myString.Length> 1)`来检查字符串是否有效.取决于OP是否会遇到这样的字符串,如果是,那么它们将如何处理. (2认同)

Phy*_*hyx 9

看看String.Format(),我想你想要像String.Format("{0:## - ##}",<value>);

http://msdn.microsoft.com/en-us/library/0c899ak8.aspx

PowerShell显示的示例,它使用相同的corelib

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
Run Code Online (Sandbox Code Playgroud)


ins*_*ite 6

string s = "teststring";
string newString = s.Insert(s.Length-2,"-");
Run Code Online (Sandbox Code Playgroud)

这假设您希望' - '从最后出现两个:-)

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

    /// <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;
    }
Run Code Online (Sandbox Code Playgroud)


Dyl*_*dor 6

我假设您想在字符串结尾之前添加两个字符.

string number = "12345";

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