gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:14:26 26 4
gpt4 key购买 nike

我们有一个 ArrayList 包含多个类中的项目,每次我想在列表中插入一个新项目时都会给我带来麻烦。以我的方式设计类是我的错误,但现在更改设计会比它的值(value)更令人头疼(官僚瀑布模型。)我应该预料到客户提供给我们瀑布的文档的格式更改该死的。

我想用 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, $name, $lmno, ++$index, $xyz;
}
else {
if ($name eq $after) {
$index = $i;
print; print join "" => $abc, $add, $lmno, ++$index, $xyz;
}
else { print; }
}
}

例如,

$ ./add-after Jane Foo code.java$ cat code.javaFoo 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) ); }}

关于java - 使用正则表达式重新格式化代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2140268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com