Как узнать, имеет ли строка возврат каретки, используя функцию String.Contain, используя ее символ ascii? - PullRequest
8 голосов
/ 12 ноября 2011

В C # как узнать, есть ли у строки возврат каретки с помощью функции String.Contains?Ascii для возврата каретки равно 13.

Chr(13) - это то, как возврат каретки представлен в Visual Basic.Как возврат каретки представлен в C # с использованием символа ascii, а не "\r"?

if (word.Contains(Chr(13))  
{  
    .  
    .  
    .  
}  

Ответы [ 7 ]

16 голосов
/ 12 ноября 2011

Поскольку вы заявляете, что не хотите использовать \r, вы можете привести целое число к char:

if (word.Contains((char)13)) { ... }
15 голосов
/ 12 ноября 2011
if (word.Contains(Environment.NewLine)) { }
5 голосов
/ 12 ноября 2011

Вы можете ввести значение char, используя одинарные кавычки

var s = "hello\r";

if (s.Contains('\r')) 
{

}

Если его легче читать, вы можете привести 13 к символу

var s = "hello\r";

if (s.Contains((char)13)) 
{

}
1 голос
/ 12 ноября 2011
s.Contains('\x0D');

символы представлены в одинарных кавычках;

Что не так с использованием \ r?

1 голос
/ 12 ноября 2011

Convert.Char(byte asciiValue) создает символ из любого целого числа;так что

if (word.Contains(Convert.Char(13)) 

должен делать эту работу.

1 голос
/ 12 ноября 2011

Это действительно во всех версиях .NET:

if (word.Contains("\r"))
{
  ...
}

Это действительно только для .NET 3.5:

if (word.Contains('\r'))
{
  ...
}
0 голосов
/ 01 мая 2019

Я уверен, что вы можете сделать это с помощью регулярного выражения, но если вы глупы, как я, этот метод расширения является хорошим способом:

public static bool HasLineBreaks(this string expression)
{
    return expression.Split(new[] { "\r\n", "\r", "\n" },StringSplitOptions.None).Length > 1;
}
...