在我有限的经验中,我参与了几个项目,这些项目有一些字符串实用程序类,其中包含确定给定字符串是否为数字的方法.这个想法一直都是一样的,然而,实施却有所不同.有些使用try/catch包围解析尝试
public boolean isInteger(String str) {
try {
Integer.parseInt(str);
return true;
} catch (NumberFormatException nfe) {}
return false;
}
Run Code Online (Sandbox Code Playgroud)
和其他人匹配正则表达式
public boolean isInteger(String str) {
return str.matches("^-?[0-9]+(\\.[0-9]+)?$");
}
Run Code Online (Sandbox Code Playgroud)
这些方法中的一种比另一种更好吗?我个人更喜欢使用正则表达式方法,因为它很简洁,但是如果在迭代过程中调用,例如,数十万个字符串的列表,它会在par上执行吗?
注意:由于我是网站的新手,我不完全理解这个社区Wiki业务,所以如果这属于那里让我知道,我很乐意移动它.
编辑: 有了所有的TryParse建议,我把Asaph的基准代码(感谢一个很棒的帖子!)移植到C#并添加了一个TryParse方法.而且看起来,TryParse赢得了胜利.然而,尝试捕获方法耗费了大量时间.我认为我做错了什么!我还更新了正则表达式来处理负数和小数点.
更新的C#基准代码的结果:
00:00:51.7390000 for isIntegerParseInt
00:00:03.9110000 for isIntegerRegex
00:00:00.3500000 for isIntegerTryParse
Run Code Online (Sandbox Code Playgroud)
使用:
static bool isIntegerParseInt(string str) {
try {
int.Parse(str);
return true;
} catch (FormatException e){}
return false;
}
static bool isIntegerRegex(string str) {
return Regex.Match(str, "^-?[0-9]+(\\.[0-9]+)?$").Success;
}
static bool isIntegerTryParse(string str) {
int bob;
return Int32.TryParse(str, out bob); …Run Code Online (Sandbox Code Playgroud) 我最近购买了一台Mac,主要用于VMWare Fusion下的C#开发.随着所有不错的Mac应用程序的出现,我开始考虑Xcode潜伏,只需点击一下即可安装,并学习Objective-C.
两种语言之间的语法看起来非常不同,可能是因为Objective-C起源于C,而C#起源于Java/C++.但是可以学习不同的语法,所以应该没问题.
我主要担心的是使用该语言,是否有助于生成结构良好,可读且优雅的代码.我非常喜欢LINQ和C#中的var等功能,并想知道Objective-C中是否有等价物或更好/不同的功能.
我会错过使用Objective-C开发哪些语言功能?我会获得什么功能?
编辑:框架比较是有用和有趣的,但语言比较是这个问题的真正要求(部分是我最初标记的错误.net).据推测,Cocoa和.NET本身都是非常丰富的框架,两者都有其目的,一个针对Mac OS X和另一个Windows.
感谢您到目前为止经过深思熟虑和合理平衡的观点!
我想要一个只接受数字的文本控件.(只需45或366之类的整数值)
做这个的最好方式是什么?
以下代码检查了float()在输入非ascii符号时方法的行为:
import sys
try:
float(u'\xbd')
except ValueError as e:
print sys.getdefaultencoding() # in my system, this is 'ascii'
print e[0].decode('latin-1') # u'invalid literal for float(): ' followed by the 1/2 (one half) character
print unicode(e[0]) # raises "UnicodeDecodeError: 'ascii' codec can't decode byte 0xbd in position 29: ordinal not in range(128)"
Run Code Online (Sandbox Code Playgroud)
我的问题:为什么错误信息e[0]以Latin-1编码?默认编码是Ascii,这似乎是unicode()预期的.
平台是Ubuntu 9.04,Python 2.6.2
我使用OO Perl创建了一些业务类,我想确保在更改代码时不会破坏它们.听起来像单元测试是要走的路.
是否有类似于Perl的jUnit?
随意详细说明如何在Perl项目中实现单元测试.
我有一个服务器可执行文件与Active Directory对话以检索用户信息.除了AD之外,这个exe还允许客户编写自己的插件来与自定义用户目录进行通信.
此可执行文件名称很强.
以下是真实的陈述:
为了使强名称程序集加载另一个程序集,加载的程序集也必须使用相同的键进行签名.
如果程序集没有强签名,则以下代码返回null,没有错误指示程序集未正确签名.请注意,如果我对程序集进行签名,我会得到一个IService实例.这让我相信加载的程序集必须是强签名的.
Assembly assembly = Assembly.LoadFrom(path);
foreach (Type t in assembly.GetTypes())
{
if (t.GetInterface(typeof(IService).FullName) != null)
{
return (Activator.CreateInstance(t) as IService);
}
}
Run Code Online (Sandbox Code Playgroud)
那么,这是否意味着如果你有一个强签名的程序集和支持程序集插件,它们也必须签名 - 插件编写者必须使用相同的密钥签名?这听起来不对.
最后,假设我有一个实现IService接口的程序集,但也引用了一个程序集,它引用了另一个程序集,每个程序集都用不同的密钥签名.我尝试加载时会发生什么?他们都应该用同一把钥匙签名吗?
对此有类似的问题,但我认为没有人问过这个问题.
场景:
客户 - 订单(订单具有客户ID) - 订单部分 - 部分
我想要一个查询,它返回一个客户及其所有订单和每个订单及其零件.
现在我有两个主要选择:
问题:
关于ORM的大多数建议和示例建议使用选项2,我可以看到原因.但是,选项2可能会发回大量重复数据,例如:
选项1结果(3个查询):
ID Name Country 1 Customer1 UK ID Name 1 Order1 2 Order2 ID Name 1 Part1 2 Part2 3 Part3
选项2结果(1个查询):
ID Name Country ID Name ID Name 1 Customer1 UK 1 Order1 1 Part1 1 Customer1 UK 1 Order1 2 Part2 1 Customer1 UK 1 Order1 3 Part3 1 Customer1 UK 2 Order2 1 Part1 1 Customer1 UK 2 Order2 2 Part2
选项1发回13个字段,包含3个查询.选项2在1个查询中发回42个字段.现在假设Customer表有30个字段,Orders有更复杂的子连接,数据复制很快就会变得庞大. …
只是一个基本的HTML链接问题.
我有一个Intranet设置,我需要链接到一些网络驱动器.它们位于\ server_drive\blahblah\doc.docx等驱动器上
使用file://不适用于IE8或Firefox.我该如何链接到这些文件?
有人试过Solace吗?
"Solace是一个用Python编写的完全开源的多语言支持和知识交流平台."
只想知道你的经历.开源中是否还有其他此类平台?
c# ×3
performance ×2
python ×2
assemblies ×1
encoding ×1
exception ×1
html ×1
hyperlink ×1
java ×1
junit ×1
key ×1
objective-c ×1
open-source ×1
orm ×1
perl ×1
platform ×1
plugins ×1
python-2.x ×1
sleep ×1
sql ×1
standby ×1
strongname ×1
textctrl ×1
unc ×1
unit-testing ×1
windows ×1
wxpython ×1