5

我正在开发一个简单的转换器,它将文本转换为另一种语言,

假设我有两个文本框,在第一个框中输入单词Index并按下转换按钮。我将用这个替代乌尔都语
的文本替换您的文本,但是如果您输入单词并给出一些空格或给出一些返回,我会遇到问题,然后我会像这样在 c# 中获取该文本框的文本,现在我该如何摆脱这个我总是想变得简单。 感谢您的回答,如果您有任何问题,请随时发表评论فہرستIndexindexIndex \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nIndex

4

4 回答 4

9

Trim如果新行仅位于开头的末尾,请尝试使用该方法:

input = input.Trim();

Replace如果要在字符串中的任何位置删除新行,可以使用,:

// Replace line break with spaces
input = input.Replace("\r\n", " ");
// (Optionally) Combine consecutive spaces to one space (probalby not most efficient but should work)
while (input.Contains("  ")) { input = input.Replace("  ", " "); }

如果你想完全阻止换行,大多数TextBox控件都有一个类似MultiLine或类似的属性,当设置时,它会阻止输入多行。

于 2012-12-19T11:42:35.557 回答
5

这应该足以删除Char.IsWhiteSpace定义的空格(空格,换行符等)

string wordToTranslate = textBox1.Text.Trim();

但是,如果您的文本框包含多个单词,那么您应该使用不同的方法

string[] words = textBox1.Text.Split((char[]) null, StringSplitOptions.RemoveEmptyEntries);
foreach(string wordToTranslate in words)
    ExecTranslation(wordToTranslate);

使用Split with char[] null 作为分隔符允许将每个空格标识为有效的单词分隔符

于 2012-12-19T11:43:19.943 回答
5

input.Replace(Environment.NewLine, string.Empty).Replace(" ", string.Empty);

用户Replace从字符串的“内部”中删除字符。Trim仅删除字符串开头和结尾的字符。

于 2012-12-19T11:44:16.693 回答
4

将要忽略的所有字符添加到字符串中:

var cleanChars = text.Where(c => !"\n\r".Contains(c));
string cleanText = new string(cleanChars.ToArray());

之所以有效,是因为 string 实现了IEnumerable<char>.

于 2012-12-19T11:45:31.897 回答