Как я могу вставить «-» в моей строке? - PullRequest
2 голосов
/ 18 августа 2011

У меня есть строка, которая может выглядеть следующим образом: 12345, это 123456 или это: 1234567.

Я бы хотел, чтобы каждая строка выглядела следующим образом: 123-45, это: 1234-56 или это: 12345-67.

Как я могу сделать это в C #?

Ответы [ 4 ]

13 голосов
/ 18 августа 2011
string myString = "1234567";   
if(myString.Length > 1)
   string dashed = myString.Insert(myString.Length - 2, "-");

РЕДАКТИРОВАТЬ: добавлена ​​проверка на основе комментария, но зависит от того, как такие строки должны быть обработаны.(например, пунктирная, даже если длина = 2?)

9 голосов
/ 18 августа 2011

Посмотрите на String.Format (), я думаю, вы хотите что-то вроде String.Format ("{0: ## - ##}", );

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

Примеры показаны с powershell, в котором используются те же самые corelibs

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
6 голосов
/ 18 августа 2011

Я предполагаю, что вы хотите добавить тире за два символа до конца строки.

string number = "12345";

if(number.Length > 2)
    string result = number.Insert(number.Length-2, "-");
else
    //error checking
6 голосов
/ 18 августа 2011
string s = "teststring";
string newString = s.Insert(s.Length-2,"-");

Предполагается, что вы хотите, чтобы '-' появлялись два с конца: -)

Это может быть удобно (не проверено)

    /// <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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...