莲见天明 2022-11-22 02:22 采纳率: 50%
浏览 7
已结题

在kettle调用的java组件中提取手机号码报错。

在kettle里调用的java组件代码报错。

//导入包
import java.util.regex.*;

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
  if (first) {
    first = false;

    /* TODO: Your code here. (Using info fields)

    FieldHelper infoField = get(Fields.Info, "info_field_name");

    RowSet infoStream = findInfoRowSet("info_stream_tag");

    Object[] infoRow = null;

    int infoRowCount = 0;

    // Read all rows from info step before calling getRow() method, which returns first row from any
    // input rowset. As rowMeta for info and input steps varies getRow() can lead to errors.
    while((infoRow = getRowFrom(infoStream)) != null){

      // do something with info data
      infoRowCount++;
    }
    */
  }

  Object[] r = getRow();

  if (r == null) {
    setOutputDone();
    return false;
  }

  // It is always safest to call createOutputRow() to ensure that your output row's Object[] is large
  // enough to handle any new fields you are creating in this step.
  r = createOutputRow(r, data.outputRowMeta.size());

  /* TODO: Your code here. (See Sample)

  // Get the value from an input field
  String foobar = get(Fields.In, "a_fieldname").getString(r);

  foobar += "bar";
    
  // Set a value in a new output field
  get(Fields.Out, "output_fieldname").setValue(r, foobar);

  */

  //获取电话集
  String phone_set = get(Fields.In, "phone_set").getString(r);

  //正则表达式获取手机号
  if(phone_set == null || phone_set.length()<=0)
    return null;
  Pattern pattern = Pattern.compile("(1|861)([0-9])\\d{9}$*");
  Matcher matcher = pattern.matcher(phone_set);
  StringBuffer bf = new StringBuffer();
  while (matcher.find()) {
    bf.append(matcher.group()).append(",");
  }
  int len = bf.length();
  if (len > 0) {
    bf.deleteCharAt(len - 1);
  }
  return bf.toString();

  //输出
  get(Fields.Out, "newphone").setValue(r,phone_set);

  // Send the row on to the next step.
  putRow(data.outputRowMeta, r);

  return true;
}

报错内容为:第54行,第9列 -- if(phone_set == null || phone_set.length()<=0)
assignment conversion not possible from type "void" to type "boolean"

请问这个脚本问题点在哪,正确的提取手机号脚本如何编写?

展开全部

  • 写回答

2条回答 默认 最新

  • 游一游走一走 2022-11-22 02:29
    关注

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    莲见天明 2022-11-22 02:44

    img


    现在轮到return bf.toString();这里报错了。大神麻烦您再看看,好人一生平安。

    回复
    莲见天明 2022-11-22 02:45

    现在轮到return bf.toString()这一行报错了,大神麻烦您再看看,好人一生平安。

    回复
    游一游走一走 回复 莲见天明 2022-11-22 02:48

    img

    回复
    展开全部7条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 11月29日
  • 已采纳回答 11月22日
  • 创建了问题 11月22日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部