是否可以使用正则表达式替换来增加数字?当然,不使用评估/基于功能的替换.
这个问题的灵感来自另一个问题,其中提问者希望在文本编辑器中增加数字.可能有更多的文本编辑器支持正则表达式替换,而不是支持全脚本编写的文本编辑器,因此如果存在正则表达式,则可以方便地使用正则表达式.
而且,我经常从聪明的解决方案中学到整齐的东西,几乎无用的问题,所以我很好奇.
假设我们只讨论非负十进制整数,即\d+
.
是否有可能在一次替换?或者,有限数量的替换?
如果没有,是否至少可以给出一个上限,例如数字高达9999?
当然,它是可行的,给定一个while循环(在匹配时替换),但我们在这里寻求无循环解决方案.
说我有两张桌子,owner
而且dog
.两者都有列name
,但我想加入它们,因此存在问题,因为两个表都有列name
.我可以name
在查询期间重命名(别名)狗表中的列吗?
我的同事向我展示了这段代码,我们都想知道为什么我们似乎无法删除重复的代码.
private List<Foo> parseResponse(Response<ByteString> response) {
if (response.status().code() != Status.OK.code() || !response.payload().isPresent()) {
if (response.status().code() != Status.NOT_FOUND.code() || !response.payload().isPresent()) {
LOG.error("Cannot fetch recently played, got status code {}", response.status());
}
return Lists.newArrayList();
}
// ...
// ...
// ...
doSomeLogic();
// ...
// ...
// ...
return someOtherList;
}
Run Code Online (Sandbox Code Playgroud)
这是一个替代表示,使它不那么罗嗦:
private void f() {
if (S != 200 || !P) {
if (S != 404 || !P) {
Log();
}
return;
}
// ...
// ...
// ...
doSomeLogic();
// …
Run Code Online (Sandbox Code Playgroud) 我想重命名SELECT
表达式结果中的列.当然,以下不起作用:
SELECT * AS foobar_* FROM `foobar`
Run Code Online (Sandbox Code Playgroud)
由于我是SQL的新手,我认为我只是错过了一个可以导致答案的概念,工具或关键字.我们将赞赏正确方向的暗示.谢谢!
UPDATE
我正在寻找一种通用的方法来做到这一点,而MySQL特有的技术绝对没问题.
简而言之,我正在编写一个工具,将MySQL查询的结果"导出"到Google Spreadsheets(通过Google Data API).有些查询是连接,所以为了使列唯一,我想在所有列名前加上各自的表名.
我遇到过一些代码,通过 生成多个 UUID UUID.randomUUID()
,获取每个 UUID 的最后 7 位数字(最新版本的 UUID 在熵方面是均匀分布的),并使用它作为将行插入数据库的键。
我想知道碰撞的概率是多少。我想起了生日问题。这是这个问题的一个例子,不是吗?一年不是 365 天,而是 16^7 种可能的字符串。然后根据维基百科页面,给定n 个字符串的碰撞概率为
\n\n其中d是 16^7。
\n一位同事声称他们能够毫无问题地插入 50,000 行。我对此表示怀疑,因为与n=50,000和d=16^7发生碰撞的可能性是
\n1-((16^7-1)/16^7)^(50000*(50000-1)/2) = 99.05%\n
Run Code Online (Sandbox Code Playgroud)\n但后来我检查了我们的数据库。确实,50,000 次插入成功了。
\n这怎么可能?(除此之外,他们真的很幸运。)我是否误用了生日问题?
\n编辑
\n这是一个最小的测试,表明应该存在碰撞。
\nimport java.util.UUID;\nimport java.util.HashSet;\n\npublic class MyClass {\n public static void main(String args[]) {\n final int N = 50000;\n for (int trial = 0; trial < 10; trial++) {\n …
Run Code Online (Sandbox Code Playgroud) 我正在使用一个非常简单的动画:向左滑动一行图像:
$('#button').click(
function() {
$('div#gallery').animate({scrollLeft:'+=800px'}, 1000);
}
);
Run Code Online (Sandbox Code Playgroud)
(它应该是一个图像库;我隐藏溢出,一次只显示一个图像.)
无论如何,尽管尝试了各种缓和参数,即使速度很慢,Chrome和Safari中的动画也非常不稳定,但在Internet Explorer和Firefox中总是很流畅.(网上提出的大多数问题都是关于IE或Firefox的不稳定!)
我找到了原因,对我而言.这是一个非常特殊的情况,可能不适用于大多数,但也许它会帮助别人.我将在下面发布我的答案.(我认为网站指南允许这样做.)
我知道问为什么?对于这个网站来说这是个坏问题,因为我们无法知道.但是我的意思是作为口语的替代品,有什么可能的原因?
我发现自己写作,当然,
foo->[i];
Run Code Online (Sandbox Code Playgroud)
并且惊讶地发现它不起作用.我打算写:
(*foo)[i];
Run Code Online (Sandbox Code Playgroud)
我敢肯定大多数人已经看到了我的意思,但是要清楚,我想
bar.subscript(i);
foo->subscript(i);
Run Code Online (Sandbox Code Playgroud)
类似于
bar.operator[](i);
foo->operator[](i);
Run Code Online (Sandbox Code Playgroud)
但事实似乎并非如此.为什么?我确定我必须以错误的方式看待某些事情,但我无法弄清楚是什么.我知道的理论非常少,所以非常赞赏layperson的解释.
如果我的比喻中没有明显的错误,那么该语言的设计者可能会让操作员离开的原因是什么?它含糊不清吗?(如果是的话,因为什么可以搞错?)
根据@ chris的建议,我想在编辑中加入一些评论,因为我没有像我应该那样清楚:
OP提议运算符 - > [],两者的组合.
- 克里斯
他问为什么他想要的东西不存在,而不是为什么他试图编写的代码不起作用.
- 马修'Cogwheel'奥兰多
好的,我了解到可以使用&
或&&
将多个命令组合成一行,但似乎set
实际上不能在同一行中进行插值的变量:
C:\Users\Andrew>set foo=hello, world!&& echo %foo%
%foo%
C:\Users\Andrew>echo %foo%
hello, world!
Run Code Online (Sandbox Code Playgroud)
为什么我不能做这项工作,有没有办法让它在一条线上工作?
我需要一个单行的原因是我正在使用的外部程序接受一个命令作为预运行钩子,当然,我需要运行多个命令.
" hello, world!
应该用双引号括起来!" 实际上,这样做似乎在变量中存储文字双引号,我不想要,例如
C:\Users\Andrew>set bar="hello, world!"&& echo %bar%
%bar%
C:\Users\Andrew>echo %bar%
"hello, world!"
Run Code Online (Sandbox Code Playgroud)"在这之前应该有一个空间&&
!" 实际上,这样做似乎在变量中存储了一个尾随空格,这是我不想要的,例如
C:\Users\Andrew>set bar="hello, world!"&& echo %bar%
%bar%
C:\Users\Andrew>echo %bar%
"hello, world!"
Run Code Online (Sandbox Code Playgroud)"都!" > :(
C:\Users\Andrew>set mu="hello, world!" && echo %mu%
%mu%
C:\Users\Andrew>echo (%mu%)
("hello, world!" )
Run Code Online (Sandbox Code Playgroud)我正在尝试为JSON中的数字字符串编写正则表达式.我仍然是编写正则表达式的新手,我在这里找到了一个JSON数字的机器图,但我不确定如何攻击它.
以下是正则表达式应该找到的一些字符串."22","55.75466"," - 44.565""55e-2""69234.2423432 E78"任何帮助表示赞赏!