我发现的只是boost::algorithm::string::join.但是,将Boost仅用于加入似乎有点过分.那么也许有一些经过时间考验的食谱?
更新:
对不起,问题标题很糟糕.我正在寻找使用分隔符连接字符串的方法,而不仅仅是逐个连接.
我有简单的Django新闻条目模型:
class NewsEntry(models.Model):
pub_date = models.DateTimeField('date published')
title = models.CharField(max_length = 200)
summary = models.TextField()
content = models.TextField()
def __unicode__(self):
return self.title
Run Code Online (Sandbox Code Playgroud)
使用英文文本添加新消息(在管理员页面中)工作正常,但当我尝试添加俄语文本的新闻时,会出现错误:
/ admin/news/newsentry /中的TemplateSyntaxError
渲染时捕获DjangoUnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xd0:序数不在范围内(128).你传递了NewsEntry:[错误的Unicode数据](类'antek.news.models.NewsEntry')
Django版本:1.2.2
异常类型:TemplateSyntaxError
异常值:渲染时捕获DjangoUnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xd0:序数不在范围内(128).你传递了NewsEntry:[错误的Unicode数据](类'antek.news.models.NewsEntry')
异常位置:/usr/local/lib/python2.6/dist-packages/django/utils/encoding.py in> force_unicode,第88行
Python版本:2.6.5
回溯列表中的最后一项是:
force_unicode中的/usr/local/lib/python2.6/dist-packages/django/utils/encoding.py
当地的vars:
e:UnicodeDecodeError('ascii','\ xd0\xa2\xd0\xb5\xd1\x81\xd1\x82\xd1\x80\xd1\x83\xd1\x81\xd1\x81\xd0\xba\xd0\xbe\xd0\xb3\xd0\xbe',0,1,'序数不在范围内(128)')
代码看起来正确:self.title是unicode对象.此外,djangoproject.com在他们的博客应用程序中使用类似的代码.
我花了很多时间来解决这个问题,并创建了一个奇怪的解
from django.utils.encoding import force_unicode
# ...
def __unicode__(self):
return force_unicode(self.title)
Run Code Online (Sandbox Code Playgroud)
但是由于self.title是unicode对象,force_unicode应该返回它而不做任何更改.
为什么return self.title不起作用?
在我们的项目中,我们经常在某些条件下选择算法
例如,假设我们需要打印不同产品的订单.我们需要根据产品类型,价格或任何其他产品特性选择不同的空白并检索不同的数据.通常,我们写这样的东西.
public interface IOrderPrinter
{
bool CanPrint(Order order);
PrintResult Print(Order order);
}
class CompositeOrderPrinter : IOrderPrinter
{
private IList<IOrderPrinter> printers;
public bool CanPrint(Order order)
{
return printers.Any(p => p.CanPrint(order));
}
public PrintResult Print(Order order)
{
foreach (var printer in printers)
{
if (printer.CanPrint(order))
return printer.Print(order);
}
// throw some exception
}
public void AddPrinter(IOrderPrinter printer)
{
printers.Add(printer);
}
}
class FirstOrderPrinter : IOrderPrinter
{
public bool CanPrint(Order order)
{
return order.ProductType == ProductType.Banana && order.Price < 100;
}
public …Run Code Online (Sandbox Code Playgroud)