NSRange : 从 Objective-C 到 Java
Posted
技术标签:
【中文标题】NSRange : 从 Objective-C 到 Java【英文标题】:NSRange : from Objective-C to 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 循环之外声明它)
【参考方案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) 是的。如果他没有在循环之外声明它,那么它应该是。以上是关于NSRange : 从 Objective-C 到 Java的主要内容,如果未能解决你的问题,请参考以下文章