c#如何把字符串中的指定字符删除
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#如何把字符串中的指定字符删除相关的知识,希望对你有一定的参考价值。
参考技术Astring s = "abc";
int len = s.Length;
char[] s2 = new char[len];
int i2 = 0;
for (int i = 0; i < len; i++)
char c = s[i];
if (c != '\\r' && c != '\\n' && c != '\\t')
s2[i2++] = c;
return new String(s2, 0, i2);
扩展资料:
C#常用的字符串操作方法:替换、删除、拆分字符串
1、C#替换字符串):
public string Replace(char oldChar,char newChar); 在对象中寻找oldChar,如果寻找到,就用newChar将oldChar替换掉。
如:
string st = "abcdef";
string newstring = st.Replace('a', 'x');
Console.WriteLine(newstring); //即:xbcdef
2、Remove(C#删除字符串):
public string Remove(int startIndex); 从startIndex位置开始,删除此位置后所有的字符(包括当前位置所指定的字符)。
如:
string st = "abcdef";
string newstring = st.Remove(4);
Console.WriteLine(newstring); //即:abcd
3、Substring(C#字符串截取):
public string Substring(int startIndex); 从startIndex位置开始,提取此位置后所有的字符(包括当前位置所指定的字符)。
如:
string st = "abcdef";
string newstring = st.Substring(2);
Console.WriteLine(newstring); //即:cdef
public string Substring(int startIndex,int count); 从startIndex位置开始,提取count个字符。
如:
string st = "abcdef";
string newstring = st.Substring(2,2);
Console.WriteLine(newstring); //即:cd
4、Split(C#拆分字符串)
public string[] Split ( params char[] separator ):根据separator 指定的没有字符分隔此实例中子字符串成为Unicode字符数组, separator可以是不包含分隔符的空数组或空引用。
public string[] Split ( char[] separator, int count ):参数count 指定要返回的子字符串的最大数量。
如:
string st = "语文|数学|英语|物理";
string[] split = st.Split(new char[]'|',2);
for (int i = 0; i < split.Length; i++)
Console.WriteLine(split[i]);
如何从 C# 中的字符串中删除“ ”?我可以使用正则表达式吗?
【中文标题】如何从 C# 中的字符串中删除“\\r\\n”?我可以使用正则表达式吗?【英文标题】:How can I remove "\r\n" from a string in C#? Can I use a regular expression?如何从 C# 中的字符串中删除“\r\n”?我可以使用正则表达式吗? 【发布时间】:2010-12-31 05:12:18 【问题描述】:我正在尝试从 ASP.NET 文本区域中保留字符串。我需要去掉回车换行符,然后把剩下的东西分解成一个 50 个字符的字符串数组。
到目前为止我有这个
var commentTxt = new string[] ;
var cmtTb = GridView1.Rows[rowIndex].FindControl("txtComments") as TextBox;
if (cmtTb != null)
commentTxt = cmtTb.Text.Length > 50
? new[] cmtTb.Text.Substring(0, 50), cmtTb.Text.Substring(51)
: new[] cmtTb.Text;
它工作正常,但我没有去掉 CrLf 字符。我该如何正确地做到这一点?
【问题讨论】:
【参考方案1】:用途:
string json = "\r\n \"LOINC_NUM\": \"10362-2\",\r\n";
var result = JObject.Parse(json.Replace(System.Environment.NewLine, string.Empty));
【讨论】:
string json= "\r\n \"LOINC_NUM\": \"10362-2\",\r\n";【参考方案2】:这是完美的方法:
请注意,Environment.NewLine 适用于 Microsoft 平台。
除了上述之外,还需要在单独函数中添加\r和\n!
以下代码支持您在 Linux、Windows 或 Mac 上输入:
var stringTest = "\r Test\nThe Quick\r\n brown fox";
Console.WriteLine("Original is:");
Console.WriteLine(stringTest);
Console.WriteLine("-------------");
stringTest = stringTest.Trim().Replace("\r", string.Empty);
stringTest = stringTest.Trim().Replace("\n", string.Empty);
stringTest = stringTest.Replace(Environment.NewLine, string.Empty);
Console.WriteLine("Output is : ");
Console.WriteLine(stringTest);
Console.ReadLine();
【讨论】:
【参考方案3】:.Trim() 函数将为您完成所有工作!
我正在尝试上面的代码,但是在“trim”功能之后,我注意到它甚至在它到达替换代码之前都是“干净的”!
String input: "This is an example string.\r\n\r\n"
Trim method result: "This is an example string."
来源:http://www.dotnetperls.com/trim
【讨论】:
-1 因为这只适用于字符串的开头和结尾。 @im1dermike 我认为投反对票有点不必要,我刚刚发现并使用了它,绝对是我的最佳选择 @SeanMissingham 仅仅因为一个不充分的答案对你有用并不意味着它是一个好的答案。【参考方案4】:试试这个:
private void txtEntry_KeyUp(object sender, KeyEventArgs e)
if (e.KeyCode == Keys.Enter)
string trimText;
trimText = this.txtEntry.Text.Replace("\r\n", "").ToString();
this.txtEntry.Text = trimText;
btnEnter.PerformClick();
【讨论】:
使用 Replace("\r", "").Replace("\n", "") 支持更广泛的平台特定行尾序列。【参考方案5】:更好的代码:
yourstring = yourstring.Replace(System.Environment.NewLine, string.Empty);
【讨论】:
-1:这仅适用于在相同环境中创建文本的情况。【参考方案6】:这会在换行符的任何组合上拆分字符串并用空格连接它们,假设您确实想要换行符所在的空格。
var oldString = "the quick brown\rfox jumped over\nthe box\r\nand landed on some rocks.";
var newString = string.Join(" ", Regex.Split(oldString, @"(?:\r\n|\n|\r)"));
Console.Write(newString);
// prints:
// the quick brown fox jumped over the box and landed on some rocks.
【讨论】:
更好的选择...永远! 谢谢,这为我节省了很多时间! 这对我帮助最大。 最佳选择,我正是在寻找这个!谢谢。【参考方案7】:假设您想用 something 替换换行符,这样就可以:
the quick brown fox\r\n
jumped over the lazy dog\r\n
不会是这样的:
the quick brown foxjumped over the lazy dog
我会这样做:
string[] SplitIntoChunks(string text, int size)
string[] chunk = new string[(text.Length / size) + 1];
int chunkIdx = 0;
for (int offset = 0; offset < text.Length; offset += size)
chunk[chunkIdx++] = text.Substring(offset, size);
return chunk;
string[] GetComments()
var cmtTb = GridView1.Rows[rowIndex].FindControl("txtComments") as TextBox;
if (cmtTb == null)
return new string[] ;
// I assume you don't want to run the text of the two lines together?
var text = cmtTb.Text.Replace(Environment.Newline, " ");
return SplitIntoChunks(text, 50);
如果语法不完美,我深表歉意;我现在不在使用 C# 的机器上。
【讨论】:
【参考方案8】:你可以使用正则表达式,是的,但是一个简单的 string.Replace() 可能就足够了。
myString = myString.Replace("\r\n", string.Empty);
【讨论】:
Environment.NewLine 将是服务器对新行的想法。此文本来自客户端,它可能使用不同的字符换行。这是一个答案,显示了不同浏览器对新行的使用:***.com/questions/1155678/… 在它们之间放一个管道,一行就可以搞定myString.Replace("\r|\n", string.Empty);
对不起,应该是Regex.Replace(myString, "\n|\r", String.Empty);
,那么它将一次性替换两者以上是关于c#如何把字符串中的指定字符删除的主要内容,如果未能解决你的问题,请参考以下文章