C# 设置中的制表符
Tab character in C# settings
我正在尝试将 \t
之类的制表符放入 C# 应用程序的 settings 中(如 char
)。
到目前为止我失败了。
我还尝试使用其他序列化作为 Binary
or XML
,但没有成功。
所以我的简单问题是,您能否以某种方式将制表符放入 C# 中的应用程序/用户设置中?
更新:
它是 .NET 4.5.2
看来,string
类型也是有问题的。当我从例如粘贴选项卡时notepad++,它将一个新行加上一些空白字符放入 app.config
但没有制表符:
在配置文件
中使用	
或\t
代替\t
要通过 VS 做到这一点 UI,请使用适用于几乎所有应用程序和案例的标准技巧,包括这个:在剪贴板上放置一个选项卡,然后将其粘贴到目标应用程序中。
对于其他将寻找如何在配置中保存 'TAB' 或 'SPACE' 等的人...
您可以简单地使用它来自 ASCII table (http://www.asciitable.com/) 的十进制值。因此,例如 space 字符的值为 32,制表符的值为 9。一些示例...:
示例 1:
在 App.config
中保存单个选项卡
config section:
<setting name="OneTabString" serializeAs="String">
<value>9</value>
</setting>
Application section:
char tab = Convert.ToChar(int.Parse(Properties.Settings.Default.OneTabString));
string stringTab = tab.ToString();
示例 2:
在配置中保存多选项卡字符串(有很多方法可以做到这一点,但是例如...)
Config section
<setting name="MultiTabString" serializeAs="String">
<value>9;9;9;9;9</value>
</setting>
Application section:
char[] tabs = Properties.Settings.Default.MultiTabString.GetCharsByDecimal(new char[] { ';' });
string stringTabs = string.Join(string.Empty, tabs);
//Extension method for getting chars by decimal from our string
public static char[] GetCharsByDecimal(this string inputString, char[] delimiters)
{
int[] charsDecimals = inputString.Split(delimiters, StringSplitOptions.RemoveEmptyEntries).Select(s => int.Parse(s)).ToArray();
char[] resultChars = new char[charsDecimals.Length];
for (int i = 0; i < charsDecimals.Length; i++)
{
resultChars[i] = Convert.ToChar(charsDecimals[i]);
}
return resultChars;
}
//Or safer variant of our extension method
public static char[] GetCharsByDecimal(this string inputString)
{
int[] charsDecimals = Regex.Split(inputString, @"\D+").Select(s => int.Parse(s)).ToArray();
char[] resultChars = new char[charsDecimals.Length];
for (int i = 0; i < charsDecimals.Length; i++)
{
resultChars[i] = Convert.ToChar(charsDecimals[i]);
}
return resultChars;
}
示例 3:
在配置中保存分隔符(包括制表符)
Config section
<setting name="Delimiters" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>59</string>
<string>44</string>
<string>9</string>
<string>45</string>
<string>124</string>
<string>32</string>
</ArrayOfString>
</value>
</setting>
Application section
char[] delimiters = Properties.Settings
.Default
.Delimiters
.Cast<string>()
.Select(s => Convert.ToChar(int.Parse(s))).ToArray();
我正在尝试将 \t
之类的制表符放入 C# 应用程序的 settings 中(如 char
)。
到目前为止我失败了。
我还尝试使用其他序列化作为 Binary
or XML
,但没有成功。
所以我的简单问题是,您能否以某种方式将制表符放入 C# 中的应用程序/用户设置中?
更新:
它是 .NET 4.5.2
看来,string
类型也是有问题的。当我从例如粘贴选项卡时notepad++,它将一个新行加上一些空白字符放入 app.config
但没有制表符:
在配置文件
中使用	
或\t
代替\t
要通过 VS 做到这一点 UI,请使用适用于几乎所有应用程序和案例的标准技巧,包括这个:在剪贴板上放置一个选项卡,然后将其粘贴到目标应用程序中。
对于其他将寻找如何在配置中保存 'TAB' 或 'SPACE' 等的人...
您可以简单地使用它来自 ASCII table (http://www.asciitable.com/) 的十进制值。因此,例如 space 字符的值为 32,制表符的值为 9。一些示例...:
示例 1:
在 App.config
中保存单个选项卡config section:
<setting name="OneTabString" serializeAs="String">
<value>9</value>
</setting>
Application section:
char tab = Convert.ToChar(int.Parse(Properties.Settings.Default.OneTabString));
string stringTab = tab.ToString();
示例 2:
在配置中保存多选项卡字符串(有很多方法可以做到这一点,但是例如...)
Config section
<setting name="MultiTabString" serializeAs="String">
<value>9;9;9;9;9</value>
</setting>
Application section:
char[] tabs = Properties.Settings.Default.MultiTabString.GetCharsByDecimal(new char[] { ';' });
string stringTabs = string.Join(string.Empty, tabs);
//Extension method for getting chars by decimal from our string
public static char[] GetCharsByDecimal(this string inputString, char[] delimiters)
{
int[] charsDecimals = inputString.Split(delimiters, StringSplitOptions.RemoveEmptyEntries).Select(s => int.Parse(s)).ToArray();
char[] resultChars = new char[charsDecimals.Length];
for (int i = 0; i < charsDecimals.Length; i++)
{
resultChars[i] = Convert.ToChar(charsDecimals[i]);
}
return resultChars;
}
//Or safer variant of our extension method
public static char[] GetCharsByDecimal(this string inputString)
{
int[] charsDecimals = Regex.Split(inputString, @"\D+").Select(s => int.Parse(s)).ToArray();
char[] resultChars = new char[charsDecimals.Length];
for (int i = 0; i < charsDecimals.Length; i++)
{
resultChars[i] = Convert.ToChar(charsDecimals[i]);
}
return resultChars;
}
示例 3:
在配置中保存分隔符(包括制表符)
Config section
<setting name="Delimiters" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>59</string>
<string>44</string>
<string>9</string>
<string>45</string>
<string>124</string>
<string>32</string>
</ArrayOfString>
</value>
</setting>
Application section
char[] delimiters = Properties.Settings
.Default
.Delimiters
.Cast<string>()
.Select(s => Convert.ToChar(int.Parse(s))).ToArray();