Авто кавычки вокруг строки в C # - встроенный метод? - PullRequest
18 голосов
/ 21 апреля 2011

Есть ли какой-нибудь встроенный метод, который добавляет кавычки вокруг строки в c #?

Ответы [ 8 ]

29 голосов
/ 21 апреля 2011

Вы имеете в виду просто добавление кавычек?Как это?

text = "\"" + text + "\"";

?Я не знаю встроенного метода для этого, но было бы легко написать один, если бы вы захотели:

public static string SurroundWithDoubleQuotes(this string text)
{
    return SurroundWith(text, "\"");
}

public static string SurroundWith(this string text, string ends)
{
    return ends + text + ends;
}

Таким образом, он немного более общий:

text = text.SurroundWithDoubleQuotes();

или

text = text.SurroundWith("'"); // For single quotes

Не могу сказать, что мне нужно было делать это достаточно часто, чтобы оправдать использование метода ...

10 голосов
/ 21 апреля 2011
string quotedString = string.Format("\"{0}\"", originalString);
9 голосов
/ 21 апреля 2011

Да, с использованием конкатенации и экранированных символов

myString = "\"" + myString + "\"";

Возможно, метод расширения

public static string Quoted(this string str)
{
    return "\"" + str + "\"";
}

Использование:

var s = "Hello World"
Console.WriteLine(s.Quoted())
4 голосов
/ 21 апреля 2011

Нет, но вы можете написать свой собственный или создать метод расширения

string AddQuotes(string str)
{
    return string.Format("\"{0}\"", str);
}
3 голосов
/ 21 апреля 2011

Использование Escape-символов

Просто добавьте перед специальным символом обратную косую черту, которая называется escape character.

Простые примеры

string MyString = "Hello";
Response.Write(MyString);

Это будет печатать:

Hello

Но:

string MyString = "The man said \"Hello\"";
Response.Write(MyString);

Будет печатать:

The man said "Hello"

Альтернатива

Вы можете использовать полезный оператор @ для помощи в экранировании строк, см. Эту ссылку:

http://www.kowitz.net/archive/2007/03/06/the-c-string-literal

Тогда для кавычек вы должны использовать doubleкавычки для представления одной кавычки.Например:

string MyString = @"The man said ""Hello"" and went on his way";
Response.Write(MyString);

Выходы:

The man said "Hello" and went on his way
2 голосов
/ 30 августа 2012

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

(это немного отличается от того, что я на самом деле сделал, так что это не проверено)

public static string SurroundWith(this string text, string ends)
{
    if (!(text.StartsWith(ends) && text.EndsWith(ends)))
    {
        return string.Format("{1}{0}{1}", text, ends);
    }
    else
    {
        return text;
    } 
}
1 голос
/ 06 сентября 2011

Я немного новичок на C #, так что имейте это в виду, но у меня есть это в универсальном служебном классе, потому что я скучаю по Perl:

// overloaded quote - if no quote chars spec'd, use ""
public static string quote(string s) {
    return quote(s, "\"\"");
}

// quote a string
// q = two quote chars, like "", '', [], (), {} ...
//     or another quoted string (quote-me-like-that)
public static string quote(string s, string q) {

    if(q.Length == 0)        // no quote chars, use ""
        q = "\"\"";
    else if(q.Length == 1)    // one quote char, double it - your mileage may vary
        q = q + q;
    else if(q.Length > 2)    // longer string == quote-me-like-that
        q = q.Substring(0, 1) + q.Substring(q.Length - 1, 1);

    if(s.Length == 0)    // nothing to quote, return empty quotes
        return q;

    return q[0] + s + q[1];

}

Используйте это так:

quote("this with default");
quote("not recommended to use one char", "/");
quote("in square brackets", "[]");
quote("quote me like that", "{like this?}");

Возвращает:

"this with default"
/not recommended to use one char/
[in square brackets]
{quote me like that}
1 голос
/ 21 апреля 2011

Нет такого встроенного метода для выполнения вашего требования

Существует метод SplitQuotes, который делает что-то Input - Это очень длинная строка Output. Это очень длинная строка

Когда вы получаете строку из текстового поля или какого-либо элемента управления, она поставляется с кавычками.

Если вы все еще хотите разместить кавычки, вы можете использовать этот метод

private string PlaceQuotes(string str, int startPosition, int lastPosition)
        {
            string quotedString = string.Empty;
            string replacedString = str.Replace(str.Substring(0, startPosition),str.Substring(0, startPosition).Insert(startPosition, "'")).Substring(0, lastPosition).Insert(lastPosition, "'");
            return String.Concat(replacedString, str.Remove(0, replacedString.Length));
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...