我搜索了很多,但没有写到如何从Notepad ++中删除非ASCII字符.
我需要知道在查找和替换中写入什么命令(图片会很棒).
如果我想制作一个白名单并为所有ASCII字/行添加书签,那么非ASCII行将被取消标记
如果文件非常大并且无法选择所有ASCII行,只想选择包含非ASCII字符的行...
我有一个很长的正则表达式,我想在我的JavaScript代码中拆分成多行,以根据JSLint规则保持每行长度为80个字符.我认为这对阅读来说更好.这是模式样本:
var pattern = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
Run Code Online (Sandbox Code Playgroud) 我有以下简单的代码:
int speed1 = (int)(6.2f * 10);
float tmp = 6.2f * 10;
int speed2 = (int)tmp;
Run Code Online (Sandbox Code Playgroud)
speed1和speed2应该具有相同的值,但事实上,我有:
speed1 = 61
speed2 = 62
Run Code Online (Sandbox Code Playgroud)
我知道我应该使用Math.Round而不是cast,但我想了解为什么值不同.
我查看了生成的字节码,但除了存储和加载外,操作码是相同的.
我也在java中尝试了相同的代码,我正确地获得了62和62.
有人可以解释一下吗?
编辑: 在实际代码中,它不是直接6.2f*10而是函数调用*常量.我有以下字节码:
速度1:
IL_01b3: ldloc.s V_8
IL_01b5: callvirt instance float32 myPackage.MyClass::getSpeed()
IL_01ba: ldc.r4 10.
IL_01bf: mul
IL_01c0: conv.i4
IL_01c1: stloc.s V_9
Run Code Online (Sandbox Code Playgroud)
速度2:
IL_01c3: ldloc.s V_8
IL_01c5: callvirt instance float32 myPackage.MyClass::getSpeed()
IL_01ca: ldc.r4 10.
IL_01cf: mul
IL_01d0: stloc.s V_10
IL_01d2: ldloc.s V_10
IL_01d4: conv.i4
IL_01d5: stloc.s V_11
Run Code Online (Sandbox Code Playgroud)
我们可以看到操作数是浮点数,唯一的区别是stloc/ldloc
至于虚拟机,我尝试使用Mono/Win7,Mono/MacOS和.NET/Windows,结果相同
使用方法调用很容易从lambda转到Expression
public void GimmeExpression(Expression<Func<T>> expression)
{
((MemberExpression)expression.Body).Member.Name; // "DoStuff"
}
public void SomewhereElse()
{
GimmeExpression(() => thing.DoStuff());
}
Run Code Online (Sandbox Code Playgroud)
但我想将Func转换为表达式,仅在极少数情况下......
public void ContainTheDanger(Func<T> dangerousCall)
{
try
{
dangerousCall();
}
catch (Exception e)
{
// This next line does not work...
Expression<Func<T>> DangerousExpression = dangerousCall;
var nameOfDanger =
((MemberExpression)dangerousCall.Body).Member.Name;
throw new DangerContainer(
"Danger manifested while " + nameOfDanger, e);
}
}
public void SomewhereElse()
{
ContainTheDanger(() => thing.CrossTheStreams());
}
Run Code Online (Sandbox Code Playgroud)
不起作用的行给了我编译时错误Cannot implicitly convert type 'System.Func<T>' to 'System.Linq.Expressions.Expression<System.Func<T>>'.显式强制转换无法解决问题.我有一个设施可以做到这一点吗?
我想在整个单词上匹配正则表达式.
在下面的例子中,我试图匹配s或者season我匹配的s,e和a,o和n.
[s|season]
Run Code Online (Sandbox Code Playgroud)
如何使正则表达式匹配整个单词?
我有一个对象列表,我想删除所有空的对象,除了一个,使用filter和lambda表达式.
例如,如果输入是:
[Object(name=""), Object(name="fake_name"), Object(name="")]
Run Code Online (Sandbox Code Playgroud)
...那么输出应该是:
[Object(name=""), Object(name="fake_name")]
Run Code Online (Sandbox Code Playgroud)
有没有办法为lambda表达式添加赋值?例如:
flag = True
input = [Object(name=""), Object(name="fake_name"), Object(name="")]
output = filter(
(lambda o: [flag or bool(o.name), flag = flag and bool(o.name)][0]),
input
)
Run Code Online (Sandbox Code Playgroud) 我们知道我们可以使用if let语句作为速记来检查可选的nil然后解包.
但是,我想使用逻辑AND运算符将其与另一个表达式相结合&&.
因此,例如,在这里,我执行可选链接以解包并可选地将我的rootViewController向下转换为tabBarController.但是我没有嵌套if语句,而是将它们组合起来.
if let tabBarController = window!.rootViewController as? UITabBarController {
if tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
Run Code Online (Sandbox Code Playgroud)
综合给予:
if let tabBarController = window!.rootViewController as? UITabBarController &&
tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
Run Code Online (Sandbox Code Playgroud)
上面给出了编译错误使用未解析的标识符'tabBarController'
简化:
if let tabBarController = window!.rootViewController as? UITabBarController && true {
println("do stuff")
}
Run Code Online (Sandbox Code Playgroud)
这给出了编译错误条件绑定中的Bound值必须是Optional类型.尝试了各种语法变体后,每个都会产生不同的编译错误.我还没有找到订单和括号的获胜组合.
所以,问题是,是否可能,如果是这样,什么是正确的语法?
请注意,我想与做这个if说法不是一个switch语句或三元?运营商.
在阅读德州仪器为其SensorTag提供的示例代码时,我遇到了以下片段.
void SensorTagIO_processCharChangeEvt(uint8_t paramID) {
...
if (!!(ioValue & IO_DATA_LED1)) {
PIN_setOutputValue(hGpioPin, Board_LED1, Board_LED_ON);
} else {
PIN_setOutputValue(hGpioPin, Board_LED1, Board_LED_OFF);
}
if (!!(ioValue & IO_DATA_LED2)) {
PIN_setOutputValue(hGpioPin, Board_LED2, Board_LED_ON);
} else {
PIN_setOutputValue(hGpioPin, Board_LED2, Board_LED_OFF);
}
if (!!((ioValue & IO_DATA_BUZZER))) {
Clock_start(buzzClockHandle);
}
...
}
Run Code Online (Sandbox Code Playgroud)
声明就像这样(在同一个文件中).
#define IO_DATA_LED1 0x01
static uint8_t ioValue;
Run Code Online (Sandbox Code Playgroud)
是否if (!!(ioValue & IO_DATA_LED1))提供任何优势if (ioValue & IO_DATA_LED1)?
对于我的硒测试,我需要一个价值提供者来获得每个案例的5位数字.javascript的问题是api Math.random只支持生成一个0.起始浮点数.所以它必须介于10000和之间99999.
因此,如果它只会生成0.10000和更高,但它也会生成,这将很容易0.01000.所以这种方法没有成功:
Math.floor(Math.random()*100000+1)
Run Code Online (Sandbox Code Playgroud)
是否有可能在每种情况下生成一个5位数字(在表达式中!)?
给出以下方法:
public static void SetPropertyValue(object target, string propName, object value)
{
var propInfo = target.GetType().GetProperty(propName,
BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
if (propInfo == null)
throw new ArgumentOutOfRangeException("propName", "Property not found on target");
else
propInfo.SetValue(target, value, null);
}
Run Code Online (Sandbox Code Playgroud)
如何编写它的表达式启用等效而无需为目标传递额外的参数?
为什么这样做而不是直接设置属性我可以听到你说.例如,假设我们有以下类,其属性具有公共getter但私有setter:
public class Customer
{
public string Title {get; private set;}
public string Name {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够致电:
var myCustomerInstance = new Customer();
SetPropertyValue<Customer>(cust => myCustomerInstance.Title, "Mr");
Run Code Online (Sandbox Code Playgroud)
现在这里是一些示例代码.
public static void SetPropertyValue<T>(Expression<Func<T, Object>> memberLamda , object value)
{
MemberExpression memberSelectorExpression; …Run Code Online (Sandbox Code Playgroud)