小编Ant*_*Ant的帖子

在Javascript中替换正则表达式匹配的第n个实例

我正在尝试编写一个正则表达式函数,该函数将识别并替换字符串中匹配的单个实例,而不会影响其他实例.例如,我有这个字符串:

12||34||56
Run Code Online (Sandbox Code Playgroud)

我想用&符号替换第二组管道来获取此字符串:

12||34&&56
Run Code Online (Sandbox Code Playgroud)

正则表达式的功能需要能够处理管道的X量,让我来代替第n个集管,所以我可以使用相同的功能,使这些替代品:

23||45||45||56||67 -> 23&&45||45||56||67

23||34||98||87 -> 23||34||98&&87
Run Code Online (Sandbox Code Playgroud)

我知道,我可以只拆分/替换/ CONCAT字符串在管,我也知道,我可以匹配/\|\|/,并通过生成的数组迭代,但我想知道如果有可能写一个表达式,可以做这个.请注意,这将是JavaScript,因此有可能产生在运行时使用正则表达式eval(),但它不可能使用任何Perl的正则表达式的具体说明.

javascript regex

25
推荐指数
2
解决办法
2万
查看次数

使用Fossil DVCS重命名目录

是否可以使用Fossil重命名目录?我试过了明显的命令:

fossil mv oldname newname
Run Code Online (Sandbox Code Playgroud)

Fossil然后告诉我它做了一些事情:

RENAME oldname newname
Run Code Online (Sandbox Code Playgroud)

然而,称"化石变化"导致空列表.据我所知,重命名目录要么不受支持,要么尚未实现或只是被破坏.这有诀窍吗?

dvcs fossil

12
推荐指数
1
解决办法
1376
查看次数

哪个更合适:吸气剂和制定者或功能?

如果替代函数名称使API更明显,放弃getter和setter的"getMyValue()"和"setMyValue()"模式是否合适?

例如,假设我在C++中有这个类:


public class SomeClass {
private:
    bool mIsVisible;

public:
    void draw();
    void erase();
}
Run Code Online (Sandbox Code Playgroud)

我可以添加函数来获取/设置"mIsVisible",如下所示:


bool getVisible() { return mIsVisible; };

void setVisible(bool visible) { if (!mIsVisible && visible) { draw(); } else if (mIsVisible && !visible) { erase(); }

mIsVisible = visible;
Run Code Online (Sandbox Code Playgroud)

}

Run Code Online (Sandbox Code Playgroud)

但是,同样可以使用以下方法:


bool isVisible() { return mIsVisible; };

void show() { 
    if (!mIsVisible) {
        mIsVisible = true;
        draw();
    }
}

void hide() {
    if (mIsVisible) {
        mIsVisible = false;
        erase();
    }
}
Run Code Online (Sandbox Code Playgroud)

简而言之,有一个"setVisible(bool)"方法,还是一对"show()"和"hide()"方法更好?有会议,还是纯粹主观的?

c++ getter setter coding-style

7
推荐指数
2
解决办法
2454
查看次数

在调用之前确定realloc()行为

据我了解,当被要求保留更大的内存块时,realloc()函数将执行以下三种不同的操作之一:

if free contiguous block exists
    grow current block
else if sufficient memory
    allocate new memory
    copy old memory to new
    free old memory
else
    return null

增长当前块是一个非常便宜的操作,所以这是我想利用的行为.但是,如果我正在重新分配内存,因为我想(例如)在现有字符串的开头插入一个char,我不希望realloc()复制内存.我最终会用realloc()复制整个字符串,然后再次手动复制它以释放第一个数组元素.

是否可以确定realloc()将执行哪些操作?如果是这样,是否有可能以跨平台的方式实现?

c memory-management

6
推荐指数
1
解决办法
1938
查看次数

Java:如何递归获取所有子目录?

在调试late-out-of-bound-recursive-function之前:是否有一个获取子目录的命令?giveMeSubDirs(downToPath)

// WARNING: RECURSION out of bound or too much data
public HashSet<FileObject> getAllDirs(String path) {
  HashSet<FileObject> checkedDirs = new HashSet<FileObject>();
  HashSet<FileObject> allDirs = new HashSet<FileObject>();

  String startingPath = path;

  File fileThing = new File(path);
  FileObject fileObject = new FileObject(fileThing);

  for (FileObject dir : getDirsInDir(path)) {

    // SUBDIR

    while ( !checkedDirs.contains(dir) 
        && !(getDirsInDir(dir.getFile().getParent()).size() == 0)) {

      // DO NOT CHECK TOP DIRS if any bottom dir UNCHECKED!

      while ( uncheckedDirsOnLevel(path, checkedDirs).size() > 0) { 

        while (getDirsInDir(path).size() == 0 …
Run Code Online (Sandbox Code Playgroud)

java filesystems recursion subdirectory

6
推荐指数
1
解决办法
8040
查看次数

解码使用过时语言压缩的文件

我正在尝试解压缩一个最初使用AMOS Pro扩展压缩的数据文件,这是AMOS Pro编译器附带的旧Amiga BASIC语言.我仍然使用编程语言并可以访问压缩器和解压缩程序,但我正在尝试使用C解压缩文件.我最终希望能够在现代硬件上查看这些文件而无需使用Amiga首先是模拟器.

然而,没有关于压缩器如何工作的文档,所以我试图仅仅通过观察其行为来对其进行逆向工程.这是我到目前为止所得到的.

这是一个原始文件(ASCII):

AABCDEFGHIJKLMNOPQRSTUVWXYZAABCDEFGHIJKLMNOPQRSTUVWXYZAABCDEFGHIJKLMNOPQRSTUVWXYZ
Run Code Online (Sandbox Code Playgroud)

这是压缩版本(十六进制):

D802C6B5
05048584
4544C5C4
2524A5A4
6564E5E4
15149594
5554D5D4
3534B591
00000007
AD763363
00000051
Run Code Online (Sandbox Code Playgroud)

使用各种文件进行测试给了我一些见解:

  • 最后4个字节是原始文件的大小.
  • 该文件似乎是一个位流,所以字节边界并不重要(我说这是因为我看到ASCII代码出现在几个文件中,它们没有与字节边界对齐).
  • 文件中的所有位都以相反的方式存储.

前4个字节似乎代表序列长度.在上面的例子中,值0xD811011000二进制的; 镜像它(位是反向的)你得到的00011011,0x1B十六进制或十进制的27.这匹配序列长度.

但是,我没有取得任何进展.这看起来像标准压缩算法吗?接下来我该尝试什么?

compression algorithm binary amiga

6
推荐指数
1
解决办法
292
查看次数