我有特殊的字符串name1="value1" name2='value2'.值可以包含空格,并由单引号或双引号分隔.名称永远不会包含空格.名称/值对由空格分隔.
我想将它们解析为这样的名称 - 值对列表
string.magic_split() => { "name1"=>"value1", "name2"=>"value2" }
Run Code Online (Sandbox Code Playgroud)
如果Ruby理解外观断言,我可以做到这一点
string.split(/[\'\"](?=\s)/).each do |element|
element =~ /(\w+)=[\'\"](.*)[\'\"]/
hash[$1] = $2
end
Run Code Online (Sandbox Code Playgroud)
但Ruby不理解外观断言,所以我有点卡住了.
但是,我确信无论如何都有更优雅的方法来解决这个问题,所以我转向你.你有解决这个问题的好主意吗?
我目前正在寻找一个将执行此操作的Select语句.
|------Apples------|
|--id--|
- 1
- 16
- 23
- 42
|------Oranges------|
|--id--|
- a
- b
- c
*SELECT STATEMENT*
|------Fruit Cocktail------|
|--AppleID--|--OrangeID--|
1 a
1 b
1 c
16 a
16 b
16 c
Run Code Online (Sandbox Code Playgroud)
等等...
所以基本上每个左手栏都选择那个和每个右手栏
谢谢Daniel
我正在尝试在我的WPF应用程序中集成屏幕截图抓取功能,我希望它看起来像剪切工具.
到目前为止,我通过创建一个不透明度设置为0.5和深色背景的全屏窗口(带有画布)来实现类似的功能.当我单击某处并开始拖动时,会绘制一个白色矩形,生成类似于此的效果.
我想要的是该矩形的内部部分在背景画布中打开一个不透明孔,这样我就可以看到所选区域 - 就像剪切工具一样.
问题是,作为.NET的新手,我不知道如何或从哪里开始.对屏幕截图窗口的OpacityMask字段进行了一些研究和测试,但无处可去.
这是一个显示当前效果的小视频.
编辑:此外,作为奖金问题,是否有一种简单的方法来获取跨越多个监视器(虚拟屏幕)的屏幕截图?Graphics.CopyFromScreen()似乎只适用于1个屏幕.
已经修复了这个并且似乎适用于所有可能的奇怪的虚拟桌面布局:
// Capture screenie (rectangle is the area previously selected
double left = Canvas.GetLeft(this.rectangle);
double top = Canvas.GetTop(this.rectangle);
// Calculate left/top offset regarding to primary screen (where the app runs)
var virtualDisplay = System.Windows.Forms.SystemInformation.VirtualScreen;
var primaryScreen = System.Windows.Forms.Screen.PrimaryScreen.Bounds;
if (virtualDisplay.Left < primaryScreen.Left)
{
left -= Math.Abs(virtualDisplay.Left - primaryScreen.Left);
}
if (virtualDisplay.Top < primaryScreen.Top)
{
top -= Math.Abs(virtualDisplay.Top - primaryScreen.Top);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个像这样的Razor web帮助器:
@helper DisplayForm() {
@Html.EditorForModel();
}
Run Code Online (Sandbox Code Playgroud)
但是这给出了错误"CS0103: The name 'Html' does not exist in the current context".
有没有办法在Web帮助器中引用html助手?
主要是我问这个因为我不想分发这两个版本,如果我需要在x64 PC上安装64位.NET,在32位PC上安装32位.NET,那么我需要在我的装载机中进行检查应用程序为正确的PC下载正确的版本.
但是,如果我只是为所有人做一个,那就更容易了 - 我想知道在做这个之前是否应该知道这个是什么(即:任何反响?)还是一切都好?
另外,当我在64位版本的VS2010中编译一个exe时,它是默认编译32位exe还是64位?我假设32,但只是想确定.
谢谢.
我写了一个像以下的交易:
BEGIN TRAN
UPDATE [Table1]
SET [Name] = 'abcd'
WHERE [ID] = 1
UPDATE [Table2]
SET [Product] = 'efgh'
WHERE [ID] = 10
UPDATE [Table3]
SET [Customar] = 'ijkl'
WHERE [ID] = 11
Run Code Online (Sandbox Code Playgroud)
现在我想要回滚,如果任何UPDATE不成功.例如,在Table2中,如果没有ID = 10的Product,则应回滚事务.怎么做?请注意我正在使用SQLServer 2000.
我想知道使用php的数据库的大小.如何在整个数据库中显示兆字节的大小?特定请求的大小(以兆字节为单位)?
我只是想知道在执行此操作时是否有我应该知道的内容,或者只要在客户端上安装了.NET框架,它是否会直接起作用?
我问,因为当我尝试这个时,VB6的引用对话框说"无法注册那个dll"
谢谢
注意:对一般问题的详细解答是在Stack Overflow问题中,什么是可以省略括号,点,大括号,=(函数)等的精确规则?.
以下作品:
scala> List(1,2,3) filter (_ > 1) reduceLeft(_ + _)
res65: Int = 5
Run Code Online (Sandbox Code Playgroud)
还有以下内容:
scala> List(1,2,3).filter(_ > 1).foldLeft(0)(_ + _)
res67: Int = 5
Run Code Online (Sandbox Code Playgroud)
但不是这个sytax:
scala> List(1,2,3) filter (_ > 1) foldLeft(0)(_ + _)
<console>:10: error: 0 of type Int(0) does not take parameters
List(1,2,3) filter (_ > 1) foldLeft(0)(_ + _)
^
Run Code Online (Sandbox Code Playgroud)
什么是建议的修复?
基本上问题归结为:
我加载一个文件,将所有每个字符写入一个char*变量,该变量具有malloc()文件的长度.然后我返回该变量并打印它,然后我释放()该变量的内存,并尝试再次打印该打印它的变量.
我对C很新,所以我处理保存文本内容的变量的内存可能有些不对劲.
我尝试使用char [(ftell(file)]而不是malloc和char*,但是函数没有返回任何内容.这可能是因为它是一个局部变量,当函数返回时会被释放,对吧?
这是我的代码的样子:
main.c中:
#include <stdio.h>
#include <stdlib.h>
#include "data/filesystem/files.h"
int main(){
char *filebuffer = retrieve_file_content("assets/test.txt");
printf("%s", filebuffer);
free(filebuffer);
printf("%s", filebuffer);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
files.c:
#include <stdio.h>
#include <stdlib.h>
char *retrieve_file_content(char* path){
FILE *file;
file = fopen(path, "r");
if(file){
fseek(file, 0L, SEEK_END);
char *filebuffer = malloc(ftell(file));
if(filebuffer == NULL){ return NULL; }
fseek(file, 0L, SEEK_SET);
int i = 0;
int buffer = getc(file);
while(buffer != EOF){
filebuffer[i] = buffer;
buffer = getc(file);
i++;
}
fclose(file);
return filebuffer; …Run Code Online (Sandbox Code Playgroud)