2011-03-02 63 views
19

请原谅我的懒惰。我知道,我可以通过阅读了解这一点,但我想我会给你们中的一位C#天才赢得一些代表的机会。在C中取消引号#

我有一个数据文件INI文件格式,需要由一些C代码和一些C#代码读取。 C代码期望字符串值被引号括起来。 C#等价代码使用了一些基础类或者我无法控制的东西,但基本上它包含引号作为输出字符串的一部分。即的

MY_VAL="Hello World!" 

数据文件的内容让我

"Hello World!" 
在我的C#字符串

,当我真正需要它含有

Hello World! 

我如何有条件地(在具有第一和最后一个字符“)删除引号并获取我想要的字符串内容。

Thankyou非常。

+0

几年后,我仍然在这个简单的问题上得到了投票和徽章(对于很多观点)。精彩!我喜欢这个网站。 – AlastairG 2017-01-05 16:20:23

回答

51

在你的字符串使用与修剪“为char:

.Trim('"') 
6

我通常所说的String.Trim()用于这一目的:

string source = "\"Hello World!\""; 
string unquoted = source.Trim('"'); 
0

如果你知道总会有”结尾和开头,这将是最快的方法。

s = s.Substring(1, s.Length - 2); 
+0

这个问题明确地说“有条件地(在第一个和最后一个字符是”)“意味着在开始和结束时并不总是有一个引号 – AlastairG 2017-01-05 16:18:16

0

使用字符串替换功能或修剪功能。 如果你只是想删除第一个和最后一个引号使用子字符串函数。

string myworld = "\"Hello World!\""; 
string start = myworld.Substring(1, (myworld.Length - 2)); 
1

就拿返回的字符串,并做了Trim('"');

4

我实现сheck该报价是双方

public string UnquoteString(string str) 
{ 
    if (String.IsNullOrEmpty(str)) 
     return str; 

    int length = str.Length; 
    if (length > 1 && str[0] == '\"' && str[length - 1] == '\"') 
     str = str.Substring(1, length - 2); 

    return str; 
} 
1

我会建议使用replace()方法。

string str = "\"HelloWorld\""; 
string result = str.replace("\"", string.Empty); 
+0

如果我的理解是正确的,这也会从引导中字符串,第一个和最后一个字符也没有条件引用。 – AlastairG 2017-01-05 16:19:29

1

作为迷恋,这里(这是我的;你无可奉告),你可能要考虑

.Trim(' ').Trim('"').Trim(' ') 

,使任何,包围引号的字符串外的空格修剪,然后报价标记被剥离,最后,包含字符串的任何边界空间都将被删除。

  • 如果要保留包含的边界空白,请省略最后的.Trim('')。
  • 如果有嵌入空格和/或引号,它们将被保留。机会是这样的,并且不应该被删除。
  • 做一些研究,看看Trim()对表单提要和/或制表字符,边界和嵌入等事物做些什么。可能是一个和/或另一个Trim('')应该只是Trim()。
+0

更好的是,使用这个: .Trim('',''') – jakobbg 2017-09-06 08:42:19