Csharp交换字符串中的动态值

时间:2019-03-20 15:16:22

标签: c#

我想在STRING中交换两个值 这是使用字符完成此操作的示例:

string str =“ PQRQP”;

  var res= str.Select(a=> a == 'P' ? 'Q' : (a=='Q' ? 'P' : a)).ToArray();
  str = new String(res);

  Console.WriteLine(str);

但是我的字符串是2/7/2019,我想每次交换2和7,但是由于这些值来自用户输入,因此在运行时之前我不知道它们将是什么。

任何帮助表示感谢,谢谢!!

-----------我的解决方案----------------

            String values = DateRangePicker1.Value.ToString();
            String startDate = values.Substring(0, 8);
            String endDate = values.Substring(11, 8);
            DateTime date = DateTime.ParseExact(startDate, "M/d/yyyy", CultureInfo.InvariantCulture);
            DateTime date1 = DateTime.ParseExact(endDate, "M/d/yyyy", CultureInfo.InvariantCulture);
            String newSDate = date.ToString();
            String newEDate = date1.ToString();
            String finalSDate = newSDate.Substring(0, 10);
            String finalEDate = newEDate.Substring(0, 10);

我知道这有点混乱,但是在不影响性能的情况下为我工作

2 个答案:

答案 0 :(得分:4)

这似乎是一个本地化问题(基于您提供的字符串看起来像日期的事实)

是否有可能仅通过提供正确的日期注释来解决您的问题?

DateTime.ParseExact(string)
例如,

是一种方法,如果您告诉它字符串格式是什么,则允许您从字符串创建日期时间对象

示例:

DateTime date = DateTime.ParseExact("2/1/2019", "M/d/yyyy", CultureInfo.InvariantCulture);

将提供一个设置为2019年2月1日的datetime对象。然后,您可以使用以下方法将datetime对象转换为字符串:

date.ToString("dd-MM-yy");
output: 01-02-19

编辑:如果您有一系列可接受的格式,则可以以字符串形式提供一系列格式。

答案 1 :(得分:0)

您可以使用split来获取您不知道的角色。 像这样:

var sepratedInput = input.split('/');
var res= sepratedInput[1] +"/"+sepratedInput[0]+"/"+sepratedInput[2];
Console.write(res);