6

私はこのような文字列を持っています。

   string text =  "6A7FEBFCCC51268FBFF";

そして、4文字の後にハイフンを'text'変数に追加するためのロジックを挿入したいメソッドが1つあります。したがって、出力は次のようになります。

6A7F-EBFC-CC51-268F-BFF

上記の「text」変数ロジックにハイフンを追加することは、このメソッド内にある必要があります。

public void GetResultsWithHyphen
{
     // append hyphen after 4 characters logic goes here
}

また、などの特定の文字列からハイフンを削除したいと思います6A7F-EBFC-CC51-268F-BFF。したがって、文字列ロジックからハイフンを削除することは、このメソッド内にある必要があります。

public void GetResultsWithOutHyphen
{
     // Removing hyphen after 4 characters logic goes here
}

C#(デスクトップアプリ用)でこれを行うにはどうすればよいですか?これを行うための最良の方法は何ですか? 事前にみんなの答えに感謝します。

4

10 に答える 10

7

GetResultsWithOutHyphenstring簡単です (そして、代わりにa を返す必要がありますvoid

public string GetResultsWithOutHyphen(string input)
{
    // Removing hyphen after 4 characters logic goes here
    return input.Replace("-", "");
}

GetResultsWithHyphen場合、よりスマートな方法があるかもしれませんが、1 つの方法を次に示します。

public string GetResultsWithHyphen(string input)
{

    // append hyphen after 4 characters logic goes here
    string output = "";
    int start = 0;
    while (start < input.Length)
    {
        output += input.Substring(start, Math.Min(4,input.Length - start)) + "-";
        start += 4;
    }
    // remove the trailing dash
    return output.Trim('-');
}
于 2012-07-11T16:29:27.187 に答える
5

正規表現を使用:

public String GetResultsWithHyphen(String inputString)
{
     return Regex.Replace(inputString, @"(\w{4})(\w{4})(\w{4})(\w{4})(\w{3})",
                                       @"$1-$2-$3-$4-$5");
}

および削除の場合:

public String GetResultsWithOutHyphen(String inputString)
{
    return inputString.Replace("-", "");
}
于 2012-07-11T16:33:19.457 に答える
2

これが私が思いつくことができる最短の正規表現です。任意の長さの文字列で機能します。\B トークンは文字列の末尾で一致しないようにするため、上記のいくつかの回答のように余分なハイフンを削除する必要はありません。

    using System;
using System.Text.RegularExpressions;
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "6A7FEBFCCC51268FBFF";
            for (int i = 0; i <= text.Length;i++ )
                Console.WriteLine(hyphenate(text.Substring(0, i))); 
        } 

        static string hyphenate(string s)
        {
            var re = new Regex(@"(\w{4}\B)");
            return re.Replace (s, "$1-");
        }

        static string dehyphenate (string s)
        {
            return s.Replace("-", "");
        }
    } 
}
于 2012-07-11T16:41:01.593 に答える
1
var hyphenText = new string(
  text
 .SelectMany((i, ch) => i%4 == 3 && i != text.Length-1 ? new[]{ch, '-'} : new[]{ch})
 .ToArray()

)

于 2012-07-11T16:29:47.470 に答える
1
public static string GetResultsWithHyphen(string str) {
  return Regex.Replace(str, "(.{4})", "$1-");
  //if you don't want trailing -
  //return Regex.Replace(str, "(.{4})(?!$)", "$1-");
}

public static string GetResultsWithOutHyphen(string str) {            
  //if you just want to remove the hyphens:
  //return input.Replace("-", "");
  //if you REALLY want to remove hyphens only if they occur after 4 places:
   return Regex.Replace(str, "(.{4})-", "$1");
}
于 2012-07-11T16:37:37.680 に答える
1

次の行に沿ったもの:

public string GetResultsWithHyphen(string inText)
{
    var counter = 0;
    var outString = string.Empty;
    while (counter < inText.Length)
    {
        if (counter % 4 == 0)
            outString = string.Format("{0}-{1}", outString, inText.Substring(counter, 1));
        else
            outString += inText.Substring(counter, 1);
        counter++;
    }
    return outString;
}

これは大まかなコードであり、構文的に完全に正しいとは限りません

于 2012-07-11T16:40:01.983 に答える
0

削除する場合:

String textHyphenRemoved=text.Replace('-',''); should remove all of the hyphens

追加用

StringBuilder strBuilder = new StringBuilder();
int startPos = 0;
for (int i = 0; i < text.Length / 4; i++)
{
    startPos = i * 4;
    strBuilder.Append(text.Substring(startPos,4));

    //if it isn't the end of the string add a hyphen
    if(text.Length-startPos!=4)
        strBuilder.Append("-");
}
//add what is left
strBuilder.Append(text.Substring(startPos, 4));
string textWithHyphens = strBuilder.ToString();

私の追加コードはテストされていないことに注意してください。

于 2012-07-11T16:36:35.573 に答える
0

GetResultsWithOutHyphen method

public string GetResultsWithOutHyphen(string input)
{

     return input.Replace("-", "");

}

GetResultsWithOutHyphen method

柔軟性のために、4 の代わりに変数を渡すことができます。

public string GetResultsWithHyphen(string input)
{

string output = "";
        int start = 0;
        while (start < input.Length)
        {
            char bla = input[start];
            output += bla;
            start += 1;
            if (start % 4 == 0)
            {
                output += "-";    
            }
        }
return output;
}
于 2012-07-11T17:16:25.853 に答える