java – 使用正则表达式重新格式化代码

我们在几个类中有一个项目的ArrayList,每次我想在列表中插入一个新项目时都会给我带来麻烦.我按照我的方式设计课程是一个错误,但现在改变设计会比它的价值更令人头疼(官僚瀑布模型.)我应该预期格式更改客户为我们提供瀑布的文件该死的.

我想在python中编写一个简单的脚本进入一个类,将该项添加到列表中,然后增加以下项的所有检索.这听起来不太清楚:

Foo extends Bar{
    public Foo(){
        m_Tags.add("Jane");
        m_Tags.add("Bob");
        m_Tags.add("Jim");
    }

    public String GetJane() { return m_ParsedValue.get( m_Tags.get(1) ); }
    public String GetBob() { return m_ParsedValue.get( m_Tags.get(2) ); }
    public String GetJim() { return m_ParsedValue.get( m_Tags.get(3) ); }
}

你看我是否要在“Jane”和“Bob”之间添加一个值然后我必须在Get *函数增加整数.我只想在Python中编写一个简单的脚本来完成我的工作.有人非常尊重建议的正则表达式.

编辑:

是的,LinkedHashMap.如此简单,如此简单,所以现在不在设计规范中.我讨厌瀑布.讨厌它.整个过程是一个“小”和“简单”的部分,“不应该花费太多时间来设计”.我犯了错误.它现在已经陷入困境了.

解决方法

您希望正则表达式与编译器在令牌之间的空格方面一样灵活.这样做并模仿空白使用会使模式非常混乱.下面的代码(抱歉:Perl,而不是Python)就地编辑源文件.
#! /usr/bin/perl -i.bak    
use warnings;
use strict;
my $template =
  '^( public
      String
      Get)(\w+)( \( \) { return
        m_ParsedValue . get \( m_Tags . get \( )(\d+)( \) \) ; } )$';
$template =~ s/ +/\\s*/g;
$template =~ s/(\r?\n)+/\\s+/g;
my $getter = qr/$template/x;

die "Usage: $0 after new-name source ..\n" unless @ARGV >= 3;
my $after = shift;
my $add   = shift;
my $index;
while (<>) {
  unless (/$getter/) {
    print;
    next;
  }
  my($abc,$name,$lmno,$i,$xyz) = ($1,$2,$3,$4,$5);
  if (defined $index) {
    print join "" => $abc,++$index,$xyz;
  }
  else {
    if ($name eq $after) {
      $index = $i;
      print; print join "" => $abc,$add,$xyz;
    }
    else { print; }
  }
}

例如,

$./add-after Jane Foo code.java
$cat code.java
Foo extends Bar{
    public Foo(){
        m_Tags.add("Jane");
        m_Tags.add("Bob");
        m_Tags.add("Jim");
    }

    public String GetJane() { return m_ParsedValue.get( m_Tags.get(1) ); }
    public String GetFoo() { return m_ParsedValue.get( m_Tags.get(2) ); }
    public String GetBob() { return m_ParsedValue.get( m_Tags.get(3) ); }
    public String GetJim() { return m_ParsedValue.get( m_Tags.get(4) ); }
}

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...