Есть встроенные события для обработки MouseEnter
// Wire up the MouseEnter event when creating your buttons
button.MouseEnter += button_MouseEnter;
// Method that gets called
private void button_MouseEnter(object sender, EventArgs e)
{
var button = sender as Button;
ShipImage1.Location = button.Location;
}
s.replaceAll (reg, "& amp;")
каждый раз компилирует регулярное выражение. Компиляция шаблона один раз обеспечит некоторое увеличение производительности (в данном случае ~ 30%).
long time = System.currentTimeMillis();
String reg = "&(?!&#?[a-zA-Z0-9]{2,7};)";
Pattern p = Pattern.compile(reg);
String s="a regex test 1 & 2 1&2 and &_gt; - &_lt;";
for (int i = 0; i < 100000; i++) {
String test = p.matcher(s).replaceAll("&");
}
System.out.println("Finished in:" +
(System.currentTimeMillis() - time) + " milliseconds");
Вы должны исключить и
из своего упреждающего утверждения. Так что попробуйте это регулярное выражение:
&(?!#?[a-zA-Z0-9]{2,7};)
Или, чтобы быть точнее:
&(?!(?:#(?:[xX][0-9a-fA-F]|[0-9]+)|[a-zA-Z]+);)
Другой способ сделать это, не взрывая голову регулярным выражением, - использовать StringEscapeUtils из Commons Lang .
Я не очень хорошо знаком с классами регулярных выражений Java, но в целом вы можете захотеть изучить поиск с нулевой шириной; после амперсанда.
Вот ссылка , описывающая положительные и отрицательные прогнозы