You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求将含NSRange的Objective-C字段处理代码转换为完整Java代码

把Objective-C代码转换成Java实现

没问题,我来帮你补全并修正这段Java代码,先对齐原Objective-C代码的逻辑:从后往前遍历注解集合,对每个字段检查名称是否包含_FIXPDFBOX后缀,若存在则截取前缀部分并重命名字段。

完整的Java代码实现

// 提前声明循环变量i的int类型
for (int i = annots.size() - 1; i >= 0; --i) { 
    // 对应原Objective-C的PTField初始化,假设Java的Field类有接收对应元素的构造方法
    Field field = new Field(annots.get(i)); 
    String nameField = field.getName(); 
    // 查找"_FIXPDFBOX"的起始索引,找不到返回-1(对应OC的NSNotFound)
    int rangeIndex = nameField.indexOf("_FIXPDFBOX"); 
    if (rangeIndex != -1) { 
        // 截取从0到目标子串起始位置的前缀
        String newFieldName = nameField.substring(0, rangeIndex); 
        // 重命名字段,对应OC的[field Rename:],Java常用setName或rename方法,按需调整
        field.setName(newFieldName); 
    } 
}

关键对应点说明

  • Objective-C的[annots Size] → Java的annots.size()(Java集合类的标准方法,遵循驼峰命名)
  • [[PTField alloc] initWithField_dict: [annots GetAt: i]] → new Field(annots.get(i))(Java通过构造方法初始化对象,get(i)是集合获取指定索引元素的标准方法)
  • [field GetName] → field.getName()(Java遵循驼峰命名的getter方法规范)
  • OC的rangeOfString:判断子串存在性 → Java用String.indexOf(),返回-1表示未找到(对应OC的NSNotFound)
  • OC的substringWithRange: → Java的substring(int beginIndex, int endIndex)
  • OC的[field Rename:] → Java里通常用setName()或rename()方法,根据你的Field类实际提供的方法调整即可

内容的提问来源于stack exchange,提问作者clst

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:48:16