请求将含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
相关产品推荐
相关产品推荐

