如果在键入字符串时按 Enter 键,Eclipse 是否可以配置为将字符串转换为文本块?

问题描述 投票:0回答:1

有两件事我想弄清楚:

  1. 如果我输入字符串文字并按 Enter 键,它应该转换为文本块。
  2. 与突出显示文本块并按 CTRL+SHIFT+C 将其转换为多行注释的方式相同,应该有一个键序列用于将突出显示的连接字符串块转换为文本块。

例如,突出显示以下内容:

String sql =
  "SELECT S.STOCK_ID, S.NAME, C.COLOR, S.PROD_DESCRIP, S.PRICE, S.PROD_FAM_ID " +
  "FROM STOCK S " +
  "INNER JOIN FAMILY F " +
  "ON S.STOCK_ID = ? AND F.PART_NUM = 'FINISH' AND F.FAMILY_ID = S.PROD_FAM_ID AND S.IS_ACTIVE = 1 " +
  "LEFT OUTER JOIN COLOR C ON C.COLOR_ID = S.COLOR " +
  "ORDER BY S.PRODNO,S.NAME";

然后CTRL+SHIFT+一些东西来得到:

String sql = """
  SELECT S.STOCK_ID, S.NAME, C.COLOR, S.PROD_DESCRIP, S.PRICE, S.PROD_FAM_ID  
  FROM STOCK S 
  INNER JOIN FAMILY F 
  ON S.STOCK_ID = ? AND F.PART_NUM = 'FINISH' AND F.FAMILY_ID = S.PROD_FAM_ID AND S.IS_ACTIVE = 1 
  LEFT OUTER JOIN COLOR C ON C.COLOR_ID = S.COLOR 
  ORDER BY S.PRODNO,S.NAME
  """;
string eclipse java-17 java-21 java-text-blocks
1个回答
0
投票

似乎还没有直接的捷径可以做到这一点。 可以分两步完成:

  1. 选择不包含结尾分号的文本。点击

    Ctrl + Shift + '

    或选择
    Source > Add text block

    结果:

       """
       "SELECT S.STOCK_ID, S.NAME, C.COLOR, S.PROD_DESCRIP, S.PRICE, S.PROD_FAM_ID " +
       "FROM STOCK S " +
       "INNER JOIN FAMILY F " +
       "ON S.STOCK_ID = ? AND F.PART_NUM = 'FINISH' AND F.FAMILY_ID = S.PROD_FAM_ID AND S.IS_ACTIVE = 1 " +
       "LEFT OUTER JOIN COLOR C ON C.COLOR_ID = S.COLOR " +
       "ORDER BY S.PRODNO,S.NAME"
       """;```
    
    
  2. 再次选择不包含三引号的文本。 点击

    Ctrl + F
    ,选中
    Regular Expressions
    并使用
    ^(\s*)"([^"]+)"(\s*[;+]?)
    作为查找表达式并且
    $1$2
    作为替换表达式。点击
    Replace all

    结果

private static final String sql =
      """
      SELECT S.STOCK_ID, S.NAME, C.COLOR, S.PROD_DESCRIP, S.PRICE, S.PROD_FAM_ID 
      FROM STOCK S 
      INNER JOIN FAMILY F 
      ON S.STOCK_ID = ? AND F.PART_NUM = 'FINISH' AND F.FAMILY_ID = S.PROD_FAM_ID AND S.IS_ACTIVE = 1 
      LEFT OUTER JOIN COLOR C ON C.COLOR_ID = S.COLOR 
      ORDER BY S.PRODNO,S.NAME""";
© www.soinside.com 2019 - 2024. All rights reserved.