如何解析字符串调用数组和数组内容

问题描述:

我想用解析字符串并调用数组valueForKeyPath:如何解析字符串调用数组和数组内容

例如:

NSArray *myArray = @[1,2,3,4,5,6,7,8]; 

我有一个字符串的如下

myArray[], myArray[3],myArray[1..3] 

当我评估这些字符串我想要输出如下

evaluate(@"myArray[]") 
output:@[1,2,3,4,5,6,7,8] 
evaluate(@"myArray[3]") 
output:4 
evaluate(@"myArray[1..3]") 
output:@[2,3,4] 

我已经在使用自定义函数使用valueForKeyPath:来调用方法和函数。我坚持使用数组和参数

+0

看来你正在编写一个小型编译器。 –

+0

不是。我的要求是,我会从服务器获取这些字符串,我必须从我的应用数据中动态评估这些字符串,并将输出返回给服务器。 – Sumanth

+0

这就是我的意思。你正在对表达式进行文本表示并试图将它们作为代码执行,这是一种编译器类型的函数。 (或者,“解释者”可能会更准确。) –

你没有显示任何你已经尝试过的东西,所以你不清楚你的问题是什么 - 你似乎知道你可以从中构建解决方案的东西(valueForKeyPath:,正则表达式)。

这里是一个解决方案的概要:

  1. 你的字符串的所有似乎是一个三种形式:数组名,然后在方括号零,一个或两个整数。您可以使用(至少)NSRegularExpressionNSScanner将其分解为一到三个重要部分。如果您选择NSRegularExpression,那么只需谨慎编写该模式为[].是特殊字符,并且需要适当的转义 - 只需阅读文档。
  2. 一旦你有你的三部分,你可以使用valueForKey:假设它是一个属性或一个实例变量获得数组的值。
  3. 如果您已经匹配/扫描了一个或两个索引,那么您可以使用NSArray的方法获取对象,您可能会发现这里有用NSIndexSet

就是这样。如果你试图做到这一点,卡住编辑你的问题,显示你已经尝试过什么,说明什么是坏的,并寻求帮助;有人可能会进一步帮助。

HTH

+0

谢谢,我会检查出来 – Sumanth