zoukankan      html  css  js  c++  java
  • 用,号分隔的正则表达式 CQ

    先给一个例子吧。

    有下列字符串:

    “reservation,rental,type”

    我想用根据,号,将该字符串转换成数组。不用说,有一个最简单的方法,用string.Split(new char[]{‘,’})可以轻松办到。

    string[] strs = string.Split(new char[]{','};
    foreach(string str in strs)
    {
    	//...
    }

    但是,假设某一个数据中本身就包含了,号呢?例如:

    “reser,vation,rental,type”

    假设reser,vation本身是一个完整的数据,这下如果再用上面的方法就会出大问题了。如果能够用\,之类的标记,将该,号保留在数据中,而不是用作分隔字符串的标记就好了。

    所以,思考了一下,试着用正则表达式来解决这个问题。先将代码粘贴在这里,不知道是否有更好的方法。

    var spliters = Regex.Split(values, @"([^\\],)");
                
    for (int i = 0; i < spliters.Length; ++i)
                {
                    if (i % 2 == 1)
                    {
                        spliters[i - 1] += spliters[i].Substring(0, 1);
                        spliters[i] = spliters[i].Substring(1);
                    }
    
                }
    假设我用上面的正则表达式来分析一下数据。
    “reser\,vation,rental,type”
    会得到一下结果
    reser\,vati
    n,
    rental
    ,
    type
    你会发现,第一个n和,号被作为分隔符捕获。这显然不是我所需要的,所以又用了下面的for循环对该数据进行修正。
    for (int i = 0; i < spliters.Length; ++i)
                {
                    if (i % 2 == 1)
                    {
                        spliters[i - 1] += spliters[i].Substring(0, 1);
                        spliters[i] = spliters[i].Substring(1);
                    }
    
                }

    修正后的结果是

    reser\,vation

    ,

    rental

    ,

    type

    不知道大家是否有更好的想法。先谢谢了。

  • 相关阅读:
    java 求两个数最大值
    java 加法运算
    javs switch 语句
    git合并分支成功,但是push失败(remote: GitLab: You are not allowed to push code to protected branches on this project.)
    python 获取日期以及时间
    1713
    linux shell脚本中的延时
    java 类的继承
    Python3 使用企业微信 API 发送消息
    java if 条件语句
  • 原文地址:https://www.cnblogs.com/czy/p/1684923.html
Copyright © 2011-2022 走看看