我有一个文件名,例如:xxdatafile_20110120123030_12342.dat.我想"XXdatafile_"从文件名中提取.
如何在Unix上使用Ksh做到这一点?
我真的试图找出易于调试的可重用代码的最佳实践.我在开发人员中遇到了一个我不太了解的常见做法.
public MyConstructor(Object myObject)
{
if (myObject == null)
throw new ArgumentNullException("myObject is null.");
_myObject = myObject;
}
Run Code Online (Sandbox Code Playgroud)
几乎没有必要做这个检查.但我认为这是因为我不完全明白做这项检查的好处是什么.似乎无论如何都会抛出一个null引用异常?我可能错了,真的很想听听它的一些想法.
谢谢.
题
如何将字符串"Européen"转换为RTF格式的字符串"Europ \'e9en"?
[TestMethod]
public void Convert_A_Word_To_Rtf()
{
// Arrange
string word = "Européen";
string expected = "Europ\'e9en";
string actual = string.Empty;
// Act
// actual = ... // How?
// Assert
Assert.AreEqual(expected, actual);
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我发现了什么
RichTextBox的
RichTextBox可用于某些事情.例:
RichTextBox richTextBox = new RichTextBox();
richTextBox.Text = "Européen";
string rtfFormattedString = richTextBox.Rtf;
Run Code Online (Sandbox Code Playgroud)
但是rtfFormattedString原来是整个RTF格式的文档,而不仅仅是字符串"Europ \'e9en".
堆栈溢出
谷歌
我还在网上找到了一堆其他资源,但没有解决我的问题.
回答
不得不添加Trim()删除前面的空格result.除此之外,Brad Christie的解决方案似乎也有效.
我现在将使用这个解决方案,即使我有一个糟糕的直觉,因为我们必须使用SubString并修剪RichTextBox以获得RTF格式的字符串.
测试用例:
[TestMethod]
public void Test_To_Verify_Brad_Christies_Stackoverflow_Answer()
{
Assert.AreEqual(@"Europ\'e9en", "Européen".ConvertToRtf());
Assert.AreEqual(@"d\'e9finitif", "définitif".ConvertToRtf());
Assert.AreEqual(@"\'e0", …Run Code Online (Sandbox Code Playgroud) 我写了第一个Project Euler问题的答案:
添加1000以下的所有自然数,即3或5的倍数.
我遇到的第一件事是:
(1 until 1000).filter(i => (i % 3 == 0 || i % 5 == 0)).foldLeft(0)(_ + _)
Run Code Online (Sandbox Code Playgroud)
但它很慢(需要125毫秒),所以我重写了它,只是想到'另一种方式'而不是'更快的方式'
(1 until 1000).foldLeft(0){
(total, x) =>
x match {
case i if (i % 3 == 0 || i % 5 ==0) => i + total // Add
case _ => total //skip
}
}
Run Code Online (Sandbox Code Playgroud)
这要快得多(只有2毫秒).为什么?我猜第二个版本只使用Range生成器,并没有以任何方式显示完全实现的集合,一次完成所有这一切,更快,内存更少.我对吗?
这里是IdeOne上的代码:http://ideone.com/GbKlP
所以问题在于标题.QToolTip似乎没有提供wordwraop功能.但是,使用正则表达式可以用\n替换第N个空格,但我想知道是否有人建议更好的溶剂.具体来说,我的方法问题是它不考虑文本的长度.例如,我希望更长的文本形成更宽的段落.
有没有办法可以让"SelectDateWidget"以反向或DESC顺序显示年份?
my_form_field = forms.DateField(widget=MonthYearWidget(years=range(2012,1970)))
Run Code Online (Sandbox Code Playgroud)
似乎没有用.
MonthYear小部件是一个较小的细分,仅为您提供月份和年份
我有三个collection.deques,我需要做的是迭代它们并执行相同的操作:
for obj in deque1:
some_action(obj)
for obj in deque2:
some_action(obj)
for obj in deque3:
some_action(obj)
Run Code Online (Sandbox Code Playgroud)
我正在寻找一些功能XXX,理想情况下我可以写:
for obj in XXX(deque1, deque2, deque3):
some_action(obj)
Run Code Online (Sandbox Code Playgroud)
这里重要的是XXX必须足够高效 - 没有复制或静默使用range()等.我期望在内置函数中找到它,但到目前为止我没有发现任何类似的东西.
Python中是否已有这样的东西,或者我必须自己编写一个函数?
我已经开始将用FORTRAN编写的高能物理算法迁移到C++中面向对象的方法.FORTRAN代码在很多函数中使用了很多全局变量.
我已将全局变量简化为一组输入变量和一组不变量(变量在算法开始时计算一次,然后由所有函数使用).
此外,我将完整算法分为三个逻辑步骤,由三个不同的类表示.所以,以一种非常简单的方式,我有这样的事情:
double calculateFactor(double x, double y, double z)
{
InvariantsTypeA invA();
InvariantsTypeB invB();
// they need x, y and z
invA.CalculateValues();
invB.CalculateValues();
Step1 s1();
Step2 s2();
Step3 s3();
// they need x, y, z, invA and invB
return s1.Eval() + s2.Eval() + s3.Eval();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
InvariantsTypeX和StepX对象都需要输入参数(这些不仅仅是三个).s1,s2并且s3需要的数据invA和invB对象.s1有一个需要theta的类的成员对象,并且要构造).ThetaMatrixxzinvB是否有一个好的模式来共享输入参数和不变量到用于计算结果的所有对象? …
我在以下场景中遇到IGMP套接字调用错误;
fd = socket(PF_INET, SOCK_RAW, IPPROTO_IGMP) ;
setsockopt( fd, IPPROTO_IP, IP_HDRINCL, nval, sizeof(nval) );
/** Fill in the IP header and Ethernet header**/
/*** Fill, create the IGMP packet structures***/
if(sendto( fd, &buf, sizeof(buf), 0,(struct sockaddr *) &addr, sizeof(addr)) < 0) {
printf("Socket Sendto error %d : %s\n", errno, strerror(errno));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
sendto调用失败说消息太长.我使用8192作为缓冲区大小.所以我尝试使用以下调用来修复此错误;
if(setsockopt(dlpifd, IPPROTO_IP, SO_SNDBUF, &val, sizeof(int)) < 0) {
printf("Can't set socket options:%d:%s\n", errno, strerror(errno));
return 0;`
}
Run Code Online (Sandbox Code Playgroud)
setsockopt()调用成功,但sendto()的错误相同;
所以我用getsockopt()调用检查SO_SNDBUF大小,它显示1个字节?
我在做什么是错的.
Linux内核是否需要重新编译才能获得IGMP支持?或者我错过了什么?