首页 > 解决方案 > NSRange : 从 Objective-C 到 Java

问题描述

我必须翻译这个基于 Objective-C 的代码

  for (i = (int)[annots Size]-1; i>=0; --i) {
            PTField *field = [[PTField alloc] initWithField_dict: [annots GetAt: i]];
            NSString *nameField = [field GetName];
            NSRange range = [nameField rangeOfString:@"_FIXPDFBOX"];
            if ( range.location != NSNotFound ) {   
                NSRange sub = NSMakeRange( 0, range.location );                 
                [field Rename:[nameField substringWithRange:sub]];
            }
        }

进入Java。这是我所做的:

for (i = annots.size() - 1; i >= 0; --i) {
                    Field field = new Field(annots.getAt((int) i));
                    String nameField = field.getName();

                    int range = nameField.indexOf("_FIXPDFBOX");
                    if (range != -1) {
                        int sub = range;
                        field.rename(nameField.substring(sub));
                    }
                }

(PTField 是 Java 中的字段)。但我认为我的问题是在将 NSRange 翻译成 Java 时。你能帮我翻译一下吗?

非常感谢 :-)

标签: javaandroidiosobjective-ctranslation

解决方案


你可以这样做:

            for (i = annots.size() - 1; i >= 0; --i) {
                Field field = new Field(annots.getAt((int) i));
                String nameField = field.getName();

                int range = nameField.indexOf("_FIXPDFBOX");
                int size = "_FIXPDFBOX".length();
                if (range != -1) {
                    int sub = range;
                    field.rename(nameField.substring(sub, sub+size));
                }
            }

推荐阅读