如何替换另一个文件中的某些字符串?

时间:2015-01-23 09:37:51

标签: java regex

我有一个文本文件:

   @Entity
@Table(name = "User")
public class User implements LSLEntity, HasUUID {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;

    @Column(name = "facebook_id", unique=true)
    private String facebookId;

    @UUID
    @Column(name = "uuid", unique = true)
    private String uuid;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="user_info_id")
    private UserInfo userInfo;

    @OneToOne
    @JoinColumn(name="balanced_customer_id")
    @Transient
    private BalancedCustomer balancedCustomer;

    @OneToOne(mappedBy = "user")
    private Session session;

    public User(){
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getFacebookId() {
        return facebookId;
    }

    public void setFacebookId(String facebookId) {
        this.facebookId = facebookId;
    }

    public UserInfo getUserInfo() {
        return userInfo;
    }

    public void setUserInfo(UserInfo userInfo) {
        this.userInfo = userInfo;
    }

    public BalancedCustomer getBalancedCustomer() {
        return balancedCustomer;
    }

    public void setBalancedCustomer(BalancedCustomer balancedCustomer) {
        this.balancedCustomer = balancedCustomer;
    }

    public Session getSession() {
        return session;
    }

    public void setSession(Session session) {
        this.session = session;
    }

我想替换另一个上的所有注释。此类注释@OneToOne已替换为@myAnnotation1,而注释@Column(name = "id")已替换为@myAnnotation1(bla bla bla)。换句话说,用注释替换另一行上带注释的某些字符串。

public StringBuffer clenFile(File file) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
        StringBuffer sbRead = new StringBuffer();
        StringBuffer sbResult = new StringBuffer();
        String line = null;
        while ((line = br.readLine()) != null) {
            sbRead.append(line).append("\n");
        }
        Matcher m = Pattern.compile("(?m)^(?! *@) *(.+)(\\s)").matcher(sbRead);
        while (m.find()) {
            sbResult.append(m.group(1)).append("\n");
        }
        return sbResult;
    }

此方法从注释中清除文件。但利润率下降。如何保持边距,并将这些注释替换为您自己的注释?

立即输出:

public class User implements LSLEntity, HasUUID {
private Long id;
private String facebookId;
private String uuid;
private UserInfo userInfo;
private BalancedCustomer balancedCustomer;
private Session session;
public User(){
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFacebookId() {
return facebookId;
}
public void setFacebookId(String facebookId) {
this.facebookId = facebookId;
}
public UserInfo getUserInfo() {
return userInfo;
}
public void setUserInfo(UserInfo userInfo) {
this.userInfo = userInfo;
}
public BalancedCustomer getBalancedCustomer() {
return balancedCustomer;
}
public void setBalancedCustomer(BalancedCustomer balancedCustomer) {
this.balancedCustomer = balancedCustomer;
}
public Session getSession() {
return session;
}
public void setSession(Session session) {
this.session = session;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public String getUuid() {
return uuid;
}

1 个答案:

答案 0 :(得分:0)

通过string.replaceAll功能。

String input = "   @Entity\n" + 
                "@Table(name = \"User\")\n" + 
                "public class User implements LSLEntity, HasUUID {\n" + 
                "\n" + 
                "    @Id\n" + 
                "    @GeneratedValue(strategy = GenerationType.AUTO)\n" + 
                "    @Column(name = \"id\")\n" + 
                "    private Long id;\n" + 
                "\n" + 
                "    @Column(name = \"facebook_id\", unique=true)\n" + 
                "    private String facebookId;\n" + 
                "\n" + 
                "    @UUID\n" + 
                "    @Column(name = \"uuid\", unique = true)\n" + 
                "    private String uuid;\n" + 
                "\n" + 
                "    @OneToOne(cascade = CascadeType.ALL)\n" + 
                "    @JoinColumn(name=\"user_info_id\")\n" + 
                "    private UserInfo userInfo;\n" + 
                "\n" + 
                "    @OneToOne\n" + 
                "    @JoinColumn(name=\"balanced_customer_id\")\n" + 
                "    @Transient\n" + 
                "    private BalancedCustomer balancedCustomer;\n" + 
                "\n" + 
                "    @OneToOne(mappedBy = \"user\")\n" + 
                "    private Session session;\n" + 
                "\n" + 
                "    public User(){\n" + 
                "    }\n" + 
                "\n" + 
                "    public Long getId() {\n" + 
                "        return id;\n" + 
                "    }\n" + 
                "\n" + 
                "    public void setId(Long id) {\n" + 
                "        this.id = id;\n" + 
                "    }\n" + 
                "\n" + 
                "    public String getFacebookId() {\n" + 
                "        return facebookId;\n" + 
                "    }\n" + 
                "\n" + 
                "    public void setFacebookId(String facebookId) {\n" + 
                "        this.facebookId = facebookId;\n" + 
                "    }\n" + 
                "\n" + 
                "    public UserInfo getUserInfo() {\n" + 
                "        return userInfo;\n" + 
                "    }\n" + 
                "\n" + 
                "    public void setUserInfo(UserInfo userInfo) {\n" + 
                "        this.userInfo = userInfo;\n" + 
                "    }\n" + 
                "\n" + 
                "    public BalancedCustomer getBalancedCustomer() {\n" + 
                "        return balancedCustomer;\n" + 
                "    }\n" + 
                "\n" + 
                "    public void setBalancedCustomer(BalancedCustomer balancedCustomer) {\n" + 
                "        this.balancedCustomer = balancedCustomer;\n" + 
                "    }\n" + 
                "\n" + 
                "    public Session getSession() {\n" + 
                "        return session;\n" + 
                "    }\n" + 
                "\n" + 
                "    public void setSession(Session session) {\n" + 
                "        this.session = session;\n" + 
                "    }";

        System.out.println(input.replaceAll("(?m)^(?: *@.*)?\\n|^ +", ""));

输出:

public class User implements LSLEntity, HasUUID {
private Long id;
private String facebookId;
private String uuid;
private UserInfo userInfo;
private BalancedCustomer balancedCustomer;
private Session session;
public User(){
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFacebookId() {
return facebookId;
}
public void setFacebookId(String facebookId) {
this.facebookId = facebookId;
}
public UserInfo getUserInfo() {
return userInfo;
}
public void setUserInfo(UserInfo userInfo) {
this.userInfo = userInfo;
}
public BalancedCustomer getBalancedCustomer() {
return balancedCustomer;
}
public void setBalancedCustomer(BalancedCustomer balancedCustomer) {
this.balancedCustomer = balancedCustomer;
}
public Session getSession() {
return session;
}
public void setSession(Session session) {
this.session = session;
}