ToString格式

ToString Format

我有一个像这样的字符串“00.00-0-00”,我需要像这样转换“0000-0/00”

我已经试过了: field.ToString("####-##/##") '没有成功 String.Format(CultureInfo.InvariantCulture, "{0:####-#/##}", field) '没有成功

有什么帮助吗?

我会这样做(val 是输入字符串)

  string.Format(@"{0}{1}-{2}/{3}",
                   val.Substring(0,2),
                   val.Substring(3,2),
                   val.Substring(6,1),
                   val.Substring(8,2));

如果你不喜欢 string.Format 你也可以使用串联 (+)

如果您知道您的字符串将始终采用该格式,您可以手动完成。如果你经常需要这样做,你可以创建一个函数来完成它。

 Dim oldString As String = "00.00-0-00"
 Dim newString As String = MakeNewString(oldString)

要调用的函数:

Function MakeNewString(oldString As String) As String
    Dim noPeriod As String = Replace(oldString, ".", "")
    Return Split(noPeriod, "-")(0) & "-" & Split(noPeriod, "-")(1) & "/" & Split(noPeriod, "-")(2)
End Function

在 C# 中:

string oldString = "00.00-0-00";
string newString = MakeNewString(oldString);

C# 函数:

public string MakeNewString(string oldString)
{
    string noPeriod = Strings.Replace(oldString, ".", "");
    return Strings.Split(noPeriod, "-")(0) + "-" + Strings.Split(noPeriod, "-")(1) + "/" + Strings.Split(noPeriod, "-")(2);
}

如果您的格式始终是“00.00-0-00”,那么您可以这样使用 Regex.Replace()

VB.NET

Dim data As String = "00.00-0-00"
Console.WriteLine(Regex.Replace(data, "(\d+)\.(\d+)-(\d+)-(\d+)", "-/"))

C#

string data = "00.00-0-00";
Console.WriteLine(Regex.Replace(data, "(\d+)\.(\d+)-(\d+)-(\d+)", "-/"));    

结果:

0000-0/00

Regex 将所有数字捕获到组中,您只需将这些组与您想要的任何分隔符放回一起即可。

我的版本如果你的原始格式没有改变就可以工作(其他答案也基于)

Dim oldString As String = "00.00-0-00"
Dim parts As String() = oldString.Split({"."c, "-"c})
Dim result As String = _
    String.Format("{0}{1}-{2}/{3}", parts(0), parts(1), parts(2), parts(3)))

C# 版本

string original = "00.00-00-00";
string[] parts = original.Split(new char[] {'.', '-'});
string result = String.Format("{0}{1}-{2}/{3}", parts[0], parts[1], parts[2], parts[3]));