【问题标题】:NSRange : from Objective-C to JavaNSRange : 从 Objective-C 到 Java
【发布时间】:2018-10-16 23:38:07
【问题描述】:

我必须翻译这个基于 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 时。你能帮我翻译一下吗?

非常感谢:-)

【问题讨论】:

  • 究竟是什么问题?
  • i 必须声明。 for (int i = (除非你在 for 循环之外声明它)

标签: java android ios objective-c translation


【解决方案1】:

你可以这样做:

            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));
                }
            }

【讨论】:

  • "i" 应该声明为(int i=annots.size()-1; i>=0; --i)
  • 是的。如果他没有在循环之外声明它,那么它应该是。
猜你喜欢
  • 1970-01-01
  • 2018-11-06
  • 2014-01-15
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2011-11-28
  • 2011-05-17
  • 2014-09-28
相关资源
最近更新 更多