内置方法中字符串的自动引号
本文关键字:方法 字符串 内置 | 更新日期: 2023-09-27 17:52:17
是否有一些内置的方法在c#中为字符串添加引号?
你的意思是只是加引号吗?像这样的吗?
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
我不能说我需要经常这样做,但值得有一个方法…
string quotedString = string.Format("'"{0}'"", originalString);
是的,使用连接和转义字符
myString = "'"" + myString + "'"";
可能是一个扩展方法
public static string Quoted(this string str)
{
return "'"" + str + "'"";
}
用法:
var s = "Hello World"
Console.WriteLine(s.Quoted())
不可以,但是你可以自己编写或创建一个扩展方法
string AddQuotes(string str)
{
return string.Format("'"{0}'"", str);
}
使用转义字符
只需在特殊字符前加上反斜杠,即escape character
。
简单示例
string MyString = "Hello";
Response.Write(MyString);
这将打印:
Hello
但:
string MyString = "The man said '"Hello'"";
Response.Write(MyString);
打印:
The man said "Hello"
您可以使用有用的@
操作符来帮助转义字符串,参见此链接:
然后,对于引号,您将使用双引号来表示单引号。例如:
string MyString = @"The man said ""Hello"" and went on his way";
Response.Write(MyString);
输出:
The man said "Hello" and went on his way
我自己是一个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}
在我的例子中,我想只在字符串没有被引号包围的情况下添加引号,所以我这样做了:
(这与我实际所做的略有不同,因此未经过测试)
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;
}
}
现代C#
版本如下。使用string.Create()可以避免不必要的分配:
public static class StringExtensions
{
public static string Quote(this string s) => Surround(s, '"');
public static string Surround(this string s, char c)
{
return string.Create(s.Length + 2, s, (chars, state) =>
{
chars[0] = c;
state.CopyTo(chars.Slice(1));
chars[^1] = c;
});
}
}
没有这样的内置方法来满足您的需求
有SplitQuotes方法做一些事情输入-这是一个"非常长"的输入。字符串输出—这是一个非常长的字符串
当你从文本框或其他控件中获得字符串时,它会带有引号。
如果你仍然想加引号,那么你可以使用这种方法
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));
}