我有一段包含段落的HTML代码.(我的意思是p标签.)我想将字符串分成不同的段落.例如:
'''
<p class="my_class">Hello!</p>
<p>What's up?</p>
<p style="whatever: whatever;">Goodbye!</p>
'''
Run Code Online (Sandbox Code Playgroud)
应该成为:
['<p class="my_class">Hello!</p>',
'<p>What's up?</p>'
'<p style="whatever: whatever;">Goodbye!</p>']
Run Code Online (Sandbox Code Playgroud)
什么是一个很好的方法来解决这个问题?
在纯C++世界中,我们可以在编译时使用基于模板的编译时和运行时技术的组合在不同组件或接口之间生成接口或粘合代码(例如,大多数自动编组到使用传统类型的调用).
当必须使用Objective-C/Cocoa将C++应用程序与GUI,系统集成或IPC接口时,由于不太严格的类型,事情变得更加困难 - 但通常不需要更多的平面复制接口层:瘦桥接代表必须是必须编写定义或转换代码到语言桥接调用.
如果你必须处理非平凡大小的接口并希望避免基于脚本的代码生成,这很快变得麻烦,并且每次重构都必须发生时只是痛苦.使用(模板)元编程和Objective-C运行时库的组合,应该可以大大减少代码量...
在我重新发明轮子之前(可能浪费时间),有没有人知道这方面的技术,最佳实践或例子?
举个例子,假设我们需要一个支持这种非正式协议的委托:
- (NSString*)concatString:(NSString*)s1 withString:(NSString*)s2;
- (NSNumber*) indexOf:(CustomClass*)obj;
Run Code Online (Sandbox Code Playgroud)
现在,我没有实现明确桥接到C++实例的Obj-C类,而是想做类似的事情:
class CppObj {
ObjcDelegate m_del;
public:
CppObj() : m_del(this)
{
m_del.addHandler
<NSString* (NSString*, NSString*)>
("concatString", &CppObj::concat);
m_del.addHandler
<NSNumber* (CustomClass*)>
("indexOf", &CppObj::indexOf);
}
std::string concat(const std::string& s1, const std::string& s2) {
return s1.append(s2);
}
size_t indexOf(const ConvertedCustomClass& obj) {
return 42;
}
};
Run Code Online (Sandbox Code Playgroud)
用户需要支持其他类型的所有内容都是专门化转换模板功能:
template<class To, class From> To convert(const From&);
template<>
NSString* convert<NSString*, std::string>(const std::string& s) {
// ...
} …Run Code Online (Sandbox Code Playgroud) 我正在做一个补丁来解决一个有点混乱的应用程序中的进度条问题.进度条上的取消用于Thread.Abort执行繁重工作的线程.我把它改为提出取消标志,我可以在线程的战略位置检查.
大部分时间它工作正常但偶尔取消根本不起作用.我想Application.DoEvents在查看旗帜的状态之前我可以做一个(没有重新进入的风险),但我想要一个更"干净"的选择.
如果有人能够提供信息以了解究竟发生了什么以及这些东西如何在幕后工作,我将不胜感激.我想知道如何处理这个问题而不使用BackgroundWorker(就像你在.net 1.1中那样),但我也想知道BackgroundWorker解决那种问题以及它是如何解决的.
编辑:我正在记录你的建议,明天会尝试一些并报告.我最初使用了挥发性bool,我认为我将其更新为自动属性并忘记了volatile.工作线程可以一次又一次地查找缓存的值吗?我不知道怎么会有死锁.工作人员检查标志,因为我设法通过在运行中放置一个断点来打破那里.我总是使用相同的数据集进行测试,大部分时间它都取消了.测试之间唯一的变化就是我按下取消的那一刻.到目前为止,我只在调试中测试过,从VS开始.
编辑2:事实证明,我的问题与我的旗帜或我添加的任何内容无关.这更像是一个WinForm问题.该程序可以调用a ShowDialog(并且已经阻止了另一个ShowDialog).我无法拖动表单,它不会自动刷新.它上面的取消按钮甚至不起作用.当我暂停一切时,这是调用堆栈.
[Code externe]
Mrnf.Son.Commun.dll!Mrnf.Son.Commun.Messages.BarreProgressionBase.ShowDialog(System.Windows.Forms.IWin32Window fenetre = {Mrnf.Son.Presentation.Windows.UI.Echanges.AssistantForm}) Ligne 274 + 0xb octets C#
Mrnf.Son.Commun.dll!Mrnf.Son.Commun.Controleurs.Utils.AttendreFinTraitement(System.Windows.Forms.Form parent = {Mrnf.Son.Presentation.Windows.UI.Echanges.AssistantForm}, Mrnf.Son.Commun.Messages.BarreProgressionBase progressionBase = {Mrnf.Son.Commun.Messages.BarreProgressionMessage}, System.Threading.Thread thread = {System.Threading.Thread}) Ligne 302 + 0xd octets C#
Mrnf.Son.Affaires.dll!Mrnf.Son.Affaires.Persisteurs.Echanges.LecteurDBFGeneriqueCollection.Importer(System.Windows.Forms.Form parent = {Mrnf.Son.Presentation.Windows.UI.Echanges.AssistantForm}) Ligne 95 + 0x1d octets C#
Mrnf.Son.Affaires.dll!Mrnf.Son.Affaires.Persisteurs.Echanges.PersisteurModeleEchanges.Importer(Mrnf.Son.Affaires.Entites.Echanges.ModeleEchanges unModele = {Mrnf.Son.Presentation.Windows.Controleurs.Echanges.ModeleEchanges.ModeleEchangesGenerique}, System.Windows.Forms.Form formParent = {Mrnf.Son.Presentation.Windows.UI.Echanges.AssistantForm}) Ligne 1880 + 0xd octets C#
Mrnf.Son.Affaires.dll!Mrnf.Son.Affaires.Entites.Echanges.ModeleEchanges.Importer(System.Windows.Forms.Form formParent = {Mrnf.Son.Presentation.Windows.UI.Echanges.AssistantForm}) Ligne 875 + 0x18 octets C# … 2D中的XNA是什么,矢量角度的标准方式有效?
向右0度,向上90度,向左180度,向下270度?
什么是'标准'实施
float VectortoAngle(Vector2 vec)
Run Code Online (Sandbox Code Playgroud)
和
Vector2 AngleToVector(float angle)
Run Code Online (Sandbox Code Playgroud)
那么VectortoAngle(AngleToVector(PI))== PI?
我正在尝试启用脚本的垃圾收集器来做得更好.它应该能够回收大量的内存,但有些东西正在阻止它.
我已经使用了Devel :: Cycle了一下,这让我更近了但是我不在那里.
如何找出Perl哈希的当前引用计数(我的对象的存储)?
有没有办法跟踪谁持有对象的引用?也许是一种领带说,只要有人指出这个对象,就要记住某个人是谁.
我不确定为什么,但由于某种原因,以下代码跳过了这个else条件.我已经尝试了我能想到的一切,包括切换代码块,但它仍然会跳过这else部分.基本上,String temp = "no"如果String docID在FILESTATUS数据库中找不到传递给方法的方法,并且String temp = "yes"找到它,我想要返回此方法.
static String checkDocID(String docID)
{
String temp = null;
System.out.println("Checking if data already exists in database...");
try
{
Main.stmt = Main.con.createStatement();
String command = "SELECT * FROM FILESTATUS WHERE ID='" + docID + "'";
ResultSet queryResult = Main.stmt.executeQuery(command);
if (!queryResult.next())
{
temp = "no";
}
else
{
while (queryResult.next())
{
String result = queryResult.getString("ID");
if (result.equals(docID))
{
temp = "yes"; …Run Code Online (Sandbox Code Playgroud) 我有一个Fluent Nhibernate的问题:错误是"无法解析类MailHeader的Property MailHeader.
问题与实体"MailHeader"内的集合有关,如果我删除集合,则异常消失,但我想要这些集合!提前致谢.
涉及的实体是:
public class MailHeader : Entity
{
public MailHeader()
{
MailRecipientUsers = new List<MailRecipientUser>();
MailsDeleted = new List<MailDeleted>();
}
[Required]
public virtual string Subject { get; set; }
public virtual IList<MailRecipientUser> MailRecipientUsers { get; protected set; }
public virtual IList<MailDeleted> MailsDeleted { get; protected set; }
}
public class Mail : Entity
{
public Mail()
{
Creation = DateTime.Now;
MailHeader = new MailHeader();
}
[Required]
public virtual string BodyText { get; set; }
[Required]
public virtual …Run Code Online (Sandbox Code Playgroud) 看起来像一个愚蠢的问题,答案是"不要使用encodeURL()!" 但是我正在使用在JSP中使用netui锚标签的代码库,我需要禁用将JSESSIONID写入URL,因为这是一个安全风险.
在WebLogic中,您可以通过在weblogic.xml中配置url-rewriting-enabled来配置它(我知道,因为我在WebLogic服务器中编写了该功能!).但是,我找不到Tomcat的等效配置选项.
即使在Eclipse中安装Subclipse时没有错误.我根本不会看到SVN的观点?我尝试过"Eclipse Classic 3.5.1"和"Eclipse for PHP Developers".在下载并解压缩包之后,我使用Eclipse的"安装软件"机制来安装Subclipse 1.6.x. 我按照这里描述的步骤:http://www3.math.tu-berlin.de/jreality/mediawiki/index.php/Subclipse_installation_in_eclipse_galileo.
但是在Eclipse重新启动后,我没有获得任何SVN Repository透视图?我已经尝试过多次卸载/重新安装所有软件组件.经过3个小时的尝试,我放弃了.有没有人提示我缺少什么?
谢谢!
彼得