我目前使用re.findall查找并隔离字符串中哈希标记的'#'字符后的单词:
hashtags = re.findall(r'#([A-Za-z0-9_]+)', str1)
Run Code Online (Sandbox Code Playgroud)
它搜索str1并找到所有的hashtags.这可行,但它不考虑像这样的重音字符,例如:áéíóúñü¿.
如果其中一个字母在str1中,它会将标签保存到它之前的字母.例如,#yogenfrüz将是#yogenfr.
我需要能够解释所有带有德语,荷兰语,法语和西班牙语的重音字母,以便我可以保存像 #yogenfrüz
我怎么能这样做呢
我有我的实体设置与数据注释验证属性,我试图使用静态Validator类验证它,但我得到不同的例外,这不是正确的方法:
string _ValidateProperty(object instance, string propertyName)
{
var validationContext = new ValidationContext(instance, null, null);
validationContext.MemberName = propertyName;
var validationResults = new List<ValidationResult>();
var isValid = Validator.TryValidateProperty(instance, validationContext, validationResults);
if (isValid)
return string.Empty;
return validationResults.FirstOrDefault<ValidationResult>().ErrorMessage;
}
Run Code Online (Sandbox Code Playgroud) 我试图在具有10000多条记录的数据库表上实现即时搜索.
搜索文本框内的文本发生更改时搜索开始,当搜索框变空时,我想调用另一种加载所有数据的方法.
此外,如果用户更改搜索字符串,而正在加载另一个搜索的结果,则应停止加载这些结果以支持新搜索.
我像下面的代码一样实现它,但我想知道是否有更好或更清晰的方法来使用Rx(Reactive Extension)运算符,我觉得在第一个observable的subscribe方法中创建第二个observable比声明性的,对于if语句也是如此.
var searchStream = Observable.FromEventPattern(s => txtSearch.TextChanged += s, s => txtSearch.TextChanged -= s)
.Throttle(TimeSpan.FromMilliseconds(300))
.Select(evt =>
{
var txtbox = evt.Sender as TextBox;
return txtbox.Text;
}
);
searchStream
.DistinctUntilChanged()
.ObserveOn(SynchronizationContext.Current)
.Subscribe(searchTerm =>
{
this.parties.Clear();
this.partyBindingSource.ResetBindings(false);
long partyCount;
var foundParties = string.IsNullOrEmpty(searchTerm) ? partyRepository.GetAll(out partyCount) : partyRepository.SearchByNameAndNotes(searchTerm);
foundParties
.ToObservable(Scheduler.Default)
.TakeUntil(searchStream)
.Buffer(500)
.ObserveOn(SynchronizationContext.Current)
.Subscribe(searchResults =>
{
this.parties.AddRange(searchResults);
this.partyBindingSource.ResetBindings(false);
}
, innerEx =>
{
}
, () => { }
);
}
, ex =>
{
}
, …Run Code Online (Sandbox Code Playgroud) 我最近开始使用Dapper,一切看起来都很简单但有一件事让我感到困惑:连接管理.
根据文件:
Dapper不管理连接的生命周期,它假定它获得的连接是打开的并且没有现有的数据引用器枚举(除非启用了MARS)
鉴于此,我开始在我的存储库方法的实现中执行此操作:
using (var db = new SqliteConnection(connectionString)) {
// call Dapper methods here
}
Run Code Online (Sandbox Code Playgroud)
然后我遇到了一个包含大量记录的表,所以我IEnumerable<T>通过传递buffered: false给Query<>方法返回一个,当我开始枚举前端的枚举时,繁荣一个例外,说连接被关闭并处理了预期因为我用前面的使用块包装我的调用.
问题:最好的方法来解决这个问题?
附带问题:我管理连接的方式是首选方式吗?
我打算建立一个WPF MVVM业务应用框架,这样做的谈论在WPF平台的内存泄漏的研究时,我遇到了许多文章.
在Windows Presentation Foundation中使用数据绑定时可能会发生
内存泄漏使用DataBinding避免WPF内存泄漏(黑魔法)
严重内存泄漏瘟疫WPF
前5个WPF和Silverlight中的内存泄漏
WPF绑定错误导致可能的内存问题
但大多数可以追溯到2007年和2008年,所以我想知道哪些已经解决了,哪些没有解决.
换句话说,在构建我的框架或一般情况下(WPF 4.0,.NET 4.0)时,可能会出现哪些内存泄漏(可能会发生)?
编辑:我会尝试更具体.我可以利用WeakEventManager它及其子类来监听事件而无需开发自己的解决方案吗?
编辑2:更具体.我是否可以使用它WeakEventManager来解决.NET中事件导致的内存泄漏问题,而不仅仅是WPF?如果是这样,为什么它是WPF命名空间的一部分而不是一般的.NET命名空间?
public class Alpha
{
public ObservableCollection<Beta> Items { get; set; }
public Alpha()
{
Items = new ObservableCollection<Beta>();
}
public void DoSomething()
{
Items = GetNewItems(); // whenever I do this, Items gets a new referene,
// so every WPF binding (e.g. datagrids) are broken
}
public ObservableCollection<Beta> GetNewItems()
{
var ret = new ObservableCollection<Beta>();
// some logic for getting some items from somewhere, and populating ret
return ret;
}
}
Run Code Online (Sandbox Code Playgroud)
如何Items用GetNewItems()不带的返回值替换整个内容:
打破绑定.
必须遍历项目并将它们一个一个地复制到另一个集合中?
我有一个桌面PC网络(Windows 7),它们位于地理上彼此分开(与LAN连接).
该网络有一个Oracle后端.
我想在每台PC上本地安装一个数据库(其中大约12个,目前正在考虑SQLite,但对其他可能性开放).
我需要保证本地数据库始终保持同步,并始终与Oracle数据库保持同步,或者至少与网络连接(网状拓扑)保持同步.
同步只涉及一个表.
这个问题有哪些可行的有效解决方案?最好事先与你合作过.
我在Contact和Phone之间有一对多的单向关系,定义如下:
class Contact {
int ContactId {get; set}
ICollection<Phone> Phones {get; set}
}
class Phone {
int PhoneId {get; set;}
string PhoneNumber {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
现在在域层中,我尝试执行以下操作:
someContact.Phones.Remove(somePhone);
Run Code Online (Sandbox Code Playgroud)
当我试图打电话时context.SaveChanges()我得到一个例外,因为这种关系被定义为必需(例如,没有联系人就不能存在电话).
如何在不使用电话中的外键或导航属性的情况下解决此问题,而无需在呼叫DbSet<Phone>.Remove(Phone)前进行呼叫SaveChanges()?
我有一个文本列表,可以用以下方式重新编写:re.sub('0000', '1111',data).
一个替代模式^(.{4})(.{4})(.{3})(.{3})与\1\4\2\3在壳一个输入正常工作也.但是,我在列表中使用此模式的尝试在第一行上给出了不良结果,并且从不替换后者.我在这里错过了什么?
"0000-22N-06W-01"
"0000-22N-06W-02"
"0000-22N-06W-03"
"0000-22N-06W-04"
import re
o = open("output.txt","w")
data = open("input.txt").read()
o.write(re.sub(r'^(.{4})(.{4})(.{3})(.{3})', r'\1\4\2\3',data))
o.close()
Run Code Online (Sandbox Code Playgroud)