我用过的每一种正则表达式都一直都有"." 字符匹配除了新行(\ r或\n)之外的所有内容...当然,除非您启用单行标志.
所以,当我尝试以下C#代码时,我感到震惊:
Regex rgx = new Regex(".");
if (rgx.Match("\r\n").Success)
MessageBox.Show("There is something rotten in the state of Redmond!");
Run Code Online (Sandbox Code Playgroud)
它显示了这个消息.为了确保我不会疯狂,我尝试了以下JavaScript代码:
if (/./.test("\r\n"))
alert("Something's wrong with JavaScript too.");
Run Code Online (Sandbox Code Playgroud)
JavaScript没有显示消息,这意味着它的工作正常.
显然,"." .NET中的字符与"\ r"字符匹配.我查看了 文档,看看是否有任何关于它的内容:
通配符:匹配除\n之外的任何单个字符.
哇...因为一个正则表达式的味道什么时候点匹配一个回车?您会认为.NET的行为与其他所有正则表达式的行为一样......特别是因为它在Windows环境中使用"\ r \n"作为行分隔符.
是否有任何标志/设置可以让它像其他Regex口味一样工作?是否有任何其他解决方案不涉及替换所有.字符[^\r\n]?
在[webView:shouldStartLoadWithRequest:navigationType:]事件中,如何判断加载内容的iframe与整个页面加载内容之间的区别?看起来两者都用相同的参数调用同一个事件,唯一的区别是要加载的URL,所以没有办法分辨两者之间的区别.
我想到了几种方法来区分它们:
YES在[webView:shouldStartLoadWithRequest:navigationType:]事件中返回来正常加载页面,并且一旦加载完成,看看WebView的URL是否发生了改变...如果这样做意味着它是页面重定向,如果不是这样的话意味着它是一个加载的iframe.最好的方法是什么?你能想到我没有想过的任何方法吗?iframe有一个特殊的事件/属性,我可以使用JavaScript操作来帮助我吗?
谢谢
更新:它不像检查navigationType那么简单.虽然单击链接打开新页面将显示为navigationType = 0,但JavaScript重定向(更改window.location)将显示为navigationType = 5. iframe加载也显示为navigationType = 5.因此,当navigationType = 5,您不知道整个页面是通过JavaScript更改了URL还是只是在同一页面上加载了iframe.
假设我在iPhone上有一个加密文件,每次我要解密它时,我想"画"一个解密符号,而不是用键盘输入.
如果您要求用户在每次需要时绘制符号来解密文件(例如,每次他们启动您的应用程序时),他们可能更喜欢它必须在小键盘上键入20个字符左右的密码,并且他们仍然会得到一个20字符密码给他们的安全性(取决于他们绘制的形状/符号有多复杂).
他们绘制的符号很可能是一个笔划(例如,一旦你抬起手指就会结束),但可能非常复杂,以至于其他人很难重复它,即使他们确实看到你画了它.比如每个人的签名是如何独特且难以复制的.实际上,如果它必须防止被复制,这可能会使它过于复杂,所以现在可以忽略它,我们可以假设其他人不会看到符号,因此它是否可以重复无关紧要他们与否.
我想真正的问题是你如何将相同(合理)的笔划一致地转换为相同的密钥(例如哈希值).在算法中显然应该有一些宽恕的门槛,因为用户不能期望完全重复100%的笔画.
使用符号作为解密方法会为此问题添加一个完整的其他维度.您永远不希望以未加密的形式将生成的哈希值存储在任何位置,因此有人可能能够访问硬盘驱动器的该部分并获取解密密钥,而无需完成整个绘图过程并手动解密文件.您也很可能不想存储有关如何绘制形状的任何信息.
用户可能用作其解密符号的笔划的一个很好的例子是"&"符号.想象一下,用户每次需要解密文件时都会在iPhone上绘制此符号.每次绘制时,符号的大小可能不同.而且,符号的旋转可以根据用户如何握住他们的设备而不同.理想情况下,在两种情况下,因为绘制符号,相对于用户笔划,相同,它应该能够生成相同的哈希值,从而解密文件.
我认为形状或字符识别之类的东西是类似的算法.用户绘制某些东西(合理地表示形状)然后将其固定为正确的形状,每次绘制时都具有相同的散列值.但是,对于像这样的东西,你很可能需要一个可以绘制的形状数据库,如果你选择像字母表中所有字母的东西,你只能得到26个字母.假设用户只需要绘制一个符号来解密文件,那么你就有了一个极不安全的密码,只有26种可能性.
我想到的另一件事是你可以分解绘制成小段的符号,然后对它们进行符号识别.因此,假设您在数据库中有4个符号:垂直线,水平线和两个方向的对角线.现在,当用户绘制时,每个段被识别为其中之一,然后它们被组合以形成一些散列值.因此,假设用户选择小写字母"r"作为其解密符号.因此,他们首先绘制一条垂直线,然后是垂直线,然后是对角线和右边.这种方法的一个问题是你怎么知道何时将笔划分成单个部分?您可能还需要考虑每个单独段的粗略长度(例如,以40像素为增量).这样,如果有人画了一个变形的"r",其中驼峰出现在底部附近,它不会被识别为相同的符号,因此不会解密文件.
第三种方法可能是将屏幕划分为一个网格(不确定哪个尺寸)并简单地查看绘制笔划的单元格,并以某种方式使用此数据生成字符串.
关于如何实现这一点的任何其他想法?你听说过这样的事吗?是否存在任何阻碍此类系统工作的根本缺陷?
谢谢
在继承类中初始化常量或其他字段的最佳方法是什么?我意识到这个例子中有很多语法错误,但这是解释我想要做什么的最好例子.
public abstract class Animal {
public abstract const string Name; // #1
public abstract const bool CanFly;
public abstract double Price; // price is not const, because it can be modified
public void Fly() {
if (!CanFly)
Debug.Writeln("{0}s can't fly.", Name);
else
Debug.Writeln("The {0} flew.", Name);
}
}
public class Dog : Animal {
public override const string Name = "Dog"; // #2
public override const bool CanFly = false;
public override double Price = 320.0;
}
public class …Run Code Online (Sandbox Code Playgroud) 我正在尝试在UINavigationController上显示UILabel.问题是,当我将UILabel添加为UIWindow的子视图时,它不会自动旋转,因为它不是UIViewController的子视图(UIViewController在旋转期间自动处理更新子视图).
这是我使用的层次结构:
所以我想我可以使用以下层次结构:
这样,标签可以显示在UINavigationController的栏顶部,同时也自动旋转,因为它是UIViewController的子视图.
问题是当我尝试添加UINavigationController作为视图的子视图时:
[myViewController.view addSubview:myNavigationController.view];
Run Code Online (Sandbox Code Playgroud)
它会向下显示20个像素.我猜是因为它认为它需要为状态栏腾出空间.但是,由于UINavigationController被放置在UIView内部,而UIView没有覆盖在状态栏的顶部,因此错误地添加了另外20个像素.换句话说,UINavigationBar的顶部位于屏幕的40像素标记处而不是20像素处.
有没有简单的方法可以将UINavigationController及其所有元素(例如导航栏,工具栏,根视图控制器)移动20像素?或者让它知道它不应该补偿状态栏?
如果没有,我想我需要使用上面提到的第一个层次结构,并弄清楚如何旋转标签,使其与导航栏的旋转一致.我在哪里可以找到有关如何执行此操作的更多信息?
注意:通过"在导航栏顶部显示标签",我的意思是它应该叠加在导航栏的顶部...它不能简单地包裹在一个条形按钮项目中并作为其中一个项目放置导航栏.
cocoa-touch subview uiviewcontroller uiview uinavigationcontroller
如何获取char的unicode值?
例如,我知道我可以用ascii做到这一点:
i = Asc("a") // i == 97 (correct)
Run Code Online (Sandbox Code Playgroud)
如果我有unicode char怎么办?
i = Asc("•") // i == 149 (incorrect... should return 8226)
Run Code Online (Sandbox Code Playgroud)
显然第二个例子不起作用,因为该字符不在Ascii集中.是否有一个我可以使用的等效函数将返回8226而不是错误的结果149?
我在Outlook 2003中这样做,如果这有任何区别.
Apple在分组UITableView中用于分隔符的颜色是什么?
是否有一个常量或某种方式我可以通过编程方式访问它?

是否有一个如何在Swift中使用dispatch_once的例子?(最好是Apple的一个.)
注意:在这种情况下,我不会将它用于单身人士 ; 我想只运行一次任意代码.
更新:我主要对在实例方法中使用它时推荐的约定感兴趣,但是在类方法,函数和全局上下文中的使用对于完整性是有用的.
PromiseKit在其网站上声明如下:
我应该关注保留周期吗?
tl; dr:在promise承办人中使用self是安全的.
这很安全:
Run Code Online (Sandbox Code Playgroud)somePromise.then { self.doSomething() }提供
somePromise解析后,传递给的函数then将被释放,因此[weak self]不需要指定.指定[无主自我]可能很危险.
你告诉我不要担心保留周期?!
不,这只是默认情况下,使用PromiseKit时不会导致保留周期.但它仍有可能......
这是否意味着我永远不应该[weak self]在PromiseKit块中使用?有没有我还需要使用的情况[weak self]?它究竟是如何阻止保留周期的?
有没有办法自动化SFSafariViewController?我喜欢Xcode 7 UI测试功能,但它似乎不支持SFSafariViewController自动化.我正在测试的一些UI流程需要一个Web浏览器,因此应用程序使用SFSafariViewController使其比Web视图更安全.
swift ×2
.net ×1
algorithm ×1
c# ×1
cocoa ×1
cocoa-touch ×1
colors ×1
drawing ×1
encryption ×1
field ×1
iframe ×1
inheritance ×1
ios ×1
ios7 ×1
iphone ×1
promisekit ×1
regex ×1
retain-cycle ×1
subview ×1
swift2 ×1
syntax ×1
uitableview ×1
uiview ×1
uiwebview ×1
unicode ×1
vba ×1
xctest ×1