我正在做一个过滤器,其中我检查unicode(utf-8编码)字符串是否不包含大写字符(在所有语言中).如果字符串根本不包含任何套接字符,那对我来说没问题.
例如:'你好!' 不会通过过滤器,但"!" 应该通过过滤器,因为"!" 不是一个套装的角色.
我打算使用islower()方法,但在上面的例子中,"!".islower()将返回False.
根据Python Docs,"如果unicode字符串的套接字符全部为小写且字符串包含至少一个套接字符,则python unicode方法islower()返回True,否则返回False."
由于当字符串不包含任何套接字符时,该方法也返回False,即."!",我想检查字符串是否包含任何套接字符.
像这样......
string = unicode("!@#$%^", 'utf-8')
#check first if it contains cased characters
if not contains_cased(string):
return True
return string.islower():
Run Code Online (Sandbox Code Playgroud)
有关contains_cased()函数的任何建议吗?
或者可能采用不同的实施方法?
谢谢!
请帮我生成以下查询.说我有客户表和订单表.
客户表
CustID CustName
1 AA
2 BB
3 CC
4 DD
Run Code Online (Sandbox Code Playgroud)
订单表
OrderID OrderDate CustID
100 01-JAN-2000 1
101 05-FEB-2000 1
102 10-MAR-2000 1
103 01-NOV-2000 2
104 05-APR-2001 2
105 07-MAR-2002 2
106 01-JUL-2003 1
107 01-SEP-2004 4
108 01-APR-2005 4
109 01-MAY-2006 3
110 05-MAY-2007 1
111 07-JUN-2007 1
112 06-JUL-2007 1
Run Code Online (Sandbox Code Playgroud)
我想找出连续三个月订单的客户.(允许使用SQL Server 2005和2008进行查询).
所需的输出是:
CustName Year OrderDate
AA 2000 01-JAN-2000
AA 2000 05-FEB-2000
AA 2000 10-MAR-2000
AA 2007 05-MAY-2007
AA 2007 07-JUN-2007
AA 2007 06-JUL-2007
Run Code Online (Sandbox Code Playgroud) 给定一个带有Identification对象的lambda,并返回一个属性:
Expression<Func<Identification, object>> fx = _ => _.Id;
Run Code Online (Sandbox Code Playgroud)
以及将对象转换为标识实例的转换lambda:
ParameterExpression p = Expression.Parameter(typeof(object), "o");
Expression @new = Expression.Lambda(Expression.Convert(p, typeof(Identification)), p);
Run Code Online (Sandbox Code Playgroud)
如何构建一个执行@new(获取标识实例)并将结果传递给的新lambda fx.我需要@new的结果以fx某种方式绑定到第一个参数,我找不到一个例子.
我需要结果是一个Expression,它应该是类型Expression<Func<object, object>>,它应该将入站参数转换为a Identification然后获取Id属性.
如何在一开始没有用户名的情况下获取当前运行的MLM名称?special关键字THIS_MLM_NAME以格式返回USERNAME-302364198::MLM_NAME_HEREMLM的名称,但我只想要MLM的名称.
我试过用SUBSTRING:
SUBSTRING 200 CHARACTERS
STARTING AT ((FIND "::" IN THIS_MLM_NAME) + 2)
FROM THIS_MLM_NAME;
Run Code Online (Sandbox Code Playgroud)
但这只是回归null.我究竟做错了什么?
我需要过滤以下列表以返回以"Group"开头的第一个项目开始的所有项目,直至,但不包括以"Group"开头的下一个项目(或直至最后一个项目).
List<string> text = new List<string>();
text.Add("Group Hear It:");
text.Add(" item: The Smiths");
text.Add(" item: Fernando Sor");
text.Add("Group See It:");
text.Add(" item: Longmire");
text.Add(" item: Ricky Gervais Show");
text.Add(" item: In Bruges");
Run Code Online (Sandbox Code Playgroud)
过滤后,我希望在第一个分组中包含以下项目:
Run Code Online (Sandbox Code Playgroud)"Group Hear It:" " item: The Smiths" " item: Fernando Sor"
以及第二组中的以下项目:
Run Code Online (Sandbox Code Playgroud)"Group See It:" " item: Longmire" " item: Ricky Gervais Show" " item: In Bruges"
这不起作用,因为我在第一个过滤列表的地方过滤了"item:"项目...我是用TakeWhile关闭还是关闭?
var group = text.Where(t => t.StartsWith("Group ")))
.TakeWhile(t => t.ToString().Trim().StartsWith("item"));
Run Code Online (Sandbox Code Playgroud) 它可能看起来很简单,但它有很多错误,我试过这种方式:
String s = gameList[0].toString();
s.replaceFirst(String.valueOf(s.charAt(0)),String.valueOf(Character.toUpperCase(s.charAt(0))) );
Run Code Online (Sandbox Code Playgroud)
它会引发异常
我的另一个尝试是:
String s = gameList[0].toString();
char c = Character.toUpperCase(gameList[0].charAt(0));
gameList[0] = s.subSequence(1, s.length());
Run Code Online (Sandbox Code Playgroud)
这个也引发了例外
这很简单.
我有一个TableLayoutPanel,它基于数据库查询填充了控件(只有标签,按钮和一些带按钮的面板).当需要刷新数据时,我使用TableLayoutPanel.Controls.Clear().不幸的是,这是一个非常缓慢的操作.我希望它比填充表格的代码更快,但它至少慢3或4倍.
我明确地证明了缓慢是在执行Controls.Clear()时执行此操作,因为在显示消息框之后对TableLayoutPanel执行了单一操作(然后过程返回).控件从下往上明显消失.当记录集用于重新填充TableLayoutPanel时,从上到下显示的控件的速度几乎比我看到的快.
我已经在做TableLayoutPanel.SuspendLayout()和ResumeLayout().
this.DoubleBuffered = true在表单上使用似乎没有做任何事情.
我可以通过代码处理整个控件并重新创建它,但这是一个很大的痛苦,并使一个漂亮的表单设计器GUI毫无意义.我将不得不深入研究我在控件上设置的每个属性并为其创建一行代码(虽然我想我可以从设计器代码本身中获取它,但它仍然感觉不对).
关于如何更快地完成工作的任何想法?我甚至愿意使用除TableLayoutPanel之外的其他方法...我只需要自由地为每个单元格放置多个按钮或禁止它能够跨越表头中的列.
C#在重绘时能否至少冻结整个表格,然后立即全部绘制?
我正在尝试使用以下代码在SQL 2005上执行SSIS包:
dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF
/SET "\Package.Variables[FileFolder].Value";"\\SomeServer\Someshare\Output Batch\"
Run Code Online (Sandbox Code Playgroud)
这会产生:
Option "Batch " is not valid.
Run Code Online (Sandbox Code Playgroud)
引号内的批处理结尾处的空格给了我一个提示,也许它将最终的反斜杠视为转义字符.所以我这样试了:
dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF
/SET "\Package.Variables[FileFolder].Value";"\\\\SomeServer\\Someshare\\Output Batch\\"
Run Code Online (Sandbox Code Playgroud)
这允许程序包运行,但是当此变量用作输出数据的flatfile名称时,它现在会出现以下错误:
Warning: 2010-07-27 14:36:38.23
Code: 0x8007007B
Source: Data Flow Task Flat File Destination [72]
Description: The filename, directory name, or volume label syntax is incorrect.
End Warning
Error: 2010-07-27 14:36:38.23
Code: 0xC020200E
Source: Data Flow Task Flat File Destination [72]
Description: Cannot …Run Code Online (Sandbox Code Playgroud) 我想知道unicode.org提出的将unicode字符转换成小写的标准算法.
此外,大多数编程语言是否遵循此提议的标准?
背景:
我正在努力制作尽可能小的PNG.我正在玩PngOut,PngCrush和OptiPng等工具.
问题:
我遇到了一个1434 KB大小的文件,但它只有230 x 230像素.当我在Paint.Net中打开文件并将其另存为新文件时,新文件只有77 KB.这是一个高达1.325 MB的额外垃圾!
目标:
我想了解究竟是什么可能膨胀文件,以及如何在遇到这种膨胀时自动摆脱这种膨胀,并且无法完成这些目标中的任何一个.OptiPng不会删除元数据.
进展:
我发现exiftool似乎全能,但它没有显示任何疯狂的标签.
RIOT可以在没有额外数据的情况下生成图像的新版本,但它没有给我任何关于膨胀是什么的坚实线索 - 它绝对不是XMP信息或评论(我可以选择包含的唯一元数据).但RIOT会自动并强制删除IPTC信息和EXIF配置文件 - 它可能是其中之一吗?
期望的反馈
您对如何以编程方式或自动无损地粉碎和从PNG(以及其他图像类型)中删除元数据的想法表示赞赏.但是,我不想在没有先了解它的情况下将信息丢弃在文件中.
更新
我找到了Steel Bytes Jpeg和PNG Stripper,它确实从文件中删除了元数据(并且有一个命令行模式),产生了一个84 KB的文件然后我可以进行PNG优化,但这仍然无法帮助我理解什么我正在删除,我觉得我需要先了解才能继续.我不需要获得对生产面向公众的网站中使用的这些图像进行优化的许可,但我确实需要对进行此类更改之前所做的事情充满信心.
更新2
我没有注意到OptiPng有一个选项-strip all,它可以删除元数据.这远远比Steel Bytes Stripper好,因为它有更多的备份处理原始文件的选项 - 保留备份,或将优化文件输出到新位置.它还可以同时优化PNG的图像数据,只需要一个工具而不是两个工具.
附录
这是exiftool -a -G [file.png]显示:
[ExifTool] ExifTool Version Number : 9.60
[File] File Name : file.png
[File] Directory : .
[File] File Size : 1446 kB
[File] File Modification Date/Time : 2014:03:31 16:37:20-07:00
[File] File Access Date/Time : 2014:05:15 …Run Code Online (Sandbox Code Playgroud)