【问题标题】:Split and reformat a String using Regex使用正则表达式拆分和重新格式化字符串
【发布时间】:2016-11-15 02:05:53
【问题描述】:

我有一个字符串变量,例如:

string data= "#FirstName=Arvind #LastName= Chaudhary_009"

在 C# 中使用正则表达式我想要这样的输出:

FirstName = Arvind;
LastName= Chaudhary009;

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 你有什么理由必须在这里使用正则表达式吗? String.Split(new char[] {' ', '#'}, StringSplitOptions Remove Empty) 然后 string.Replace("=", " = ") 用于您给出的特定字符串示例。输入中是否存在一些可变性使其更难?
  • 是的,出于某种安全目的,我只想在 c# 中执行此操作,如果您可以这样做,请不要这样做

标签: c# .net c#-4.0 c#-3.0


【解决方案1】:

会有更多的方法来做到这一点。其中两个是

string data = "#FirstName=Arvind #LastName= Chaudhary_009";
data = data.Replace("_", "");
data = data.Replace("=", " = ");
string[] dt = data.Split(new char[] {'#'}, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine(dt[0]); // Print your array here

正则表达式:你要求的

Regex regex = new Regex(@"#");
string[] dt1 = regex.Split(data).Where(s => s != String.Empty).ToArray();
Console.WriteLine(dt1[0]); // Print your array here

你可以按照你想要的方式打印数组

编辑

了解cmets的需求后

string data = "#FirstName=Arvind #LastName= Chaudhary_009";
data = data.Replace("_", "");
string[] dt = data.Split(new char[] {'#'}, StringSplitOptions.RemoveEmptyEntries);

Regex regex = new Regex(@"#");
string[] dt1 = regex.Split(data).Where(s => s != String.Empty).ToArray();

foreach(string d in dt)
{
    //this will print both the line
    Console.WriteLine(d);
}

foreach(string d in dt1)
{
    //this will print both the line
    Console.WriteLine(d);
}

【讨论】:

  • 我不知道这里的确切要求,但是您的解决方案中缺少三件事。从姓氏中删除 _,将第二个 # 更改为 ;并添加一个;最后
  • 是的,要求不明确。而我假设 OP 使用 ; 来告诉字符串的两个拆分。是的,我在我的解决方案中完全忽略了_。让我解决这个问题。
  • 字符串数据 = "#FirstName=Arvind #LastName=Chaudhary_009";并希望 FirstName=Arvind;和姓氏= Chaudhary009
  • @Arvindchaudhary:代码能满足您的需求吗?
  • 如果= 之间没有空格,则忽略该行。
【解决方案2】:

会有很多解决方案。我建议您使用.NET Regex Tester 或类似的在线工具来帮助开发一个运行良好的正则表达式。

一个简单的正则表达式示例,可为您提供一些组:

#FirstName\s*=\s*(.*)\s?#LastName\s*=\s*(.*)_(.*)

运行它,然后根据组 1、2、3 格式化输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    相关资源
    最近更新 更多