Detecting illegal characters efficiently

Instead of wasting lots of time creating a string from a char array,
creating a string from another char array, concatenating them both into
a new string, and casting the keychar to a string to see if the string
contains it, make the operation natural and very efficient by creating a
new char array that has both invalid characters and making sure the
illegal character array does not contain the element.
This commit is contained in:
yankejustin 2015-05-24 00:38:58 -04:00
parent f5d671d93a
commit 94e50641cb
1 changed files with 9 additions and 10 deletions

View File

@ -1,5 +1,6 @@
using System; using System;
using System.IO; using System.IO;
using System.Linq;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Windows.Forms; using System.Windows.Forms;
using xServer.Core.Build; using xServer.Core.Build;
@ -20,8 +21,7 @@ namespace xServer.Forms
private void HasChanged() private void HasChanged()
{ {
if (_loadedProfile && !_changed) _changed = (_loadedProfile && !_changed);
_changed = true;
} }
private void UpdateControlStates() private void UpdateControlStates()
@ -137,22 +137,21 @@ namespace xServer.Forms
private void txtDelay_KeyPress(object sender, KeyPressEventArgs e) private void txtDelay_KeyPress(object sender, KeyPressEventArgs e)
{ {
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) e.Handled = (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar));
e.Handled = true;
} }
private void txtInstallname_KeyPress(object sender, KeyPressEventArgs e) private void txtInstallname_KeyPress(object sender, KeyPressEventArgs e)
{ {
string illegal = new string(Path.GetInvalidPathChars()) + new string(Path.GetInvalidFileNameChars()); char[] illegal = Path.GetInvalidPathChars().Union(Path.GetInvalidFileNameChars()).ToArray();
if ((e.KeyChar == '\\' || illegal.Contains(e.KeyChar.ToString())) && !char.IsControl(e.KeyChar))
e.Handled = true; e.Handled = ((e.KeyChar == '\\' || illegal.Any(illegalChar => (illegalChar == e.KeyChar))) && !char.IsControl(e.KeyChar));
} }
private void txtInstallsub_KeyPress(object sender, KeyPressEventArgs e) private void txtInstallsub_KeyPress(object sender, KeyPressEventArgs e)
{ {
string illegal = new string(Path.GetInvalidPathChars()) + new string(Path.GetInvalidFileNameChars()); char[] illegal = Path.GetInvalidPathChars().Union(Path.GetInvalidFileNameChars()).ToArray();
if ((e.KeyChar == '\\' || illegal.Contains(e.KeyChar.ToString())) && !char.IsControl(e.KeyChar))
e.Handled = true; e.Handled = ((e.KeyChar == '\\' || illegal.Any(illegalChar => (illegalChar == e.KeyChar))) && !char.IsControl(e.KeyChar));
} }
private void txtInstallname_TextChanged(object sender, EventArgs e) private void txtInstallname_TextChanged(object sender, EventArgs e)