您将得到一个类似于))()(())(的字符串,并且希望从该字符串中删除所有()实例,在这种情况下,这意味着这两个实例:

))()(())(
  ^^ ^^


仅保留))()(

我知道您可以使用库函数stringreplace,或者可以加载正则表达式库,但是我想知道是否有一种简洁的方式来实现此目标,而J内置运算符是唯一的吗?

我应该澄清一下,我自己的解决方案是:

#~(-.@+._1&|.)@('()'&E.)


我认为这很冗长-因此任何类似的解决方案在我的书中都不会视为“简洁”。我真的在问是否有一种方法可以使用内置函数(或2的简单组合)直接解决此问题。我希望这个答案是否定的。

最佳答案

我认为您是对的,没有简单的方法可以仅使用J原语来表达您想要执行的操作。我提出的版本非常类似于上面建议的Dan。
但是,考虑到内置库动词rplc(基于stringreplace)完全可以执行您要执行的操作,所以我不确定为什么用原语替换它会更好。

   '))()(())(' rplc '()';''
))()(


话虽如此,如果您可以提出一个compelling case,则可能没有理由不能添加它。

关于j - 仅使用内置函数进行J字符串操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44963184/

10-12 17:38