C# 如何修剪Linq中可能为空的字符串?
我在linq中有一个字符串,它是从xml加载的,该属性或元素是可选的,但我想修剪该字符串,因为xml文件可以像这样手动编写C# 如何修剪Linq中可能为空的字符串?,c#,linq,windows-phone-7,C#,Linq,Windows Phone 7,我在linq中有一个字符串,它是从xml加载的,该属性或元素是可选的,但我想修剪该字符串,因为xml文件可以像这样手动编写 <text>Hello World</text> 但当该元素不存在时,应用程序就会崩溃。首先,不要将字符串转换为字符串 这个怎么样 string QuestionText = ""; if(query.Element("text") != null) QuestionText = query.Element("text").ToString(
<text>Hello World</text>
但当该元素不存在时,应用程序就会崩溃。首先,不要将字符串转换为字符串 这个怎么样
string QuestionText = "";
if(query.Element("text") != null)
QuestionText = query.Element("text").ToString().Trim();
首先,不要把一根弦换成一根弦 这个怎么样
string QuestionText = "";
if(query.Element("text") != null)
QuestionText = query.Element("text").ToString().Trim();
这在WP7中是否可能
QuestionText = ((string)query.Element("text") ?? string.Empty).Trim();
干杯这在WP7中可能吗
QuestionText = ((string)query.Element("text") ?? string.Empty).Trim();
干杯我可能想为XElement创建一个扩展方法
public static class XElementExtensions
{
public static string TrimmedValue(this XElement elem)
{
if(elem == null)
return null; // or, possibly String.Empty depending on your requirement.
if(String.IsNullOrEmpty(elem.Value))
return elem.Value
return elem.Value.Trim();
}
}
那么:
QuestionText = query.Element("text").TrimmedValue()
我可能想为XElement创建一个扩展方法
public static class XElementExtensions
{
public static string TrimmedValue(this XElement elem)
{
if(elem == null)
return null; // or, possibly String.Empty depending on your requirement.
if(String.IsNullOrEmpty(elem.Value))
return elem.Value
return elem.Value.Trim();
}
}
那么:
QuestionText = query.Element("text").TrimmedValue()
如果您可以在null上返回空字符串,那么如何 QuestionText=(query.Element(“text”)+“”).Trim()
[我使用其他位置来转换空字符串,但当然,由于如何处理空字符串/空字符串的问题不明确,这可能与您需要的有所不同]如果您可以在空字符串上返回空字符串,如何 QuestionText=(query.Element(“text”)+“”).Trim()
[我使用其他位置转换空字符串,但当然,由于问题对于空/空字符串的处理方式不明确,这可能与您需要的有所不同]如果您希望“修剪空”为空或string.empty,则值得添加到您的问题中。您得到的答案可以是任何一种方式。请注意,
query.Element(“text”).ToString()
不会返回“Hello World”
,而是返回“Hello World”
。这可能不是您想要的,但导致了许多答案,建议如何修剪“Hello World”
。如果您希望“修剪过的null”为null或string.Empty,则值得添加到您的问题中。您得到的答案可以是任何一种方式。请注意,query.Element(“text”).ToString()
不会返回“Hello World”
,而是返回“Hello World”
。这可能不是您想要的,但导致了许多答案,建议如何修剪“Hello World”
。请注意,query.Element(“text”)
在找不到
元素时返回null。在这种情况下,检查elem.Value
是否为null会引发NullReferenceException。如何添加此扩展方法?@Joseph-您只需在项目中的任何位置添加该类,并确保在任何需要使用它的地方都有一个using
。请注意,当找不到
元素时,query.Element(“text”)
返回null。在这种情况下,检查elem.Value
是否为null会引发NullReferenceException。如何添加此扩展方法?@Joseph-您只需在项目中的任何位置添加该类,并确保在任何需要使用它的地方都有一个using
。请参阅此帮助,而不是ToString(它将其包装在我使用的xml元素中。value中,并错过了最后一个“;”为有效。非常感谢。它可以工作,但为什么计算两次却没有用呢?假设另一个线程正在剪切元素文本,您将有一个例外。@Mario-这只是一种方法,我假设由于它是wp7应用程序,文件将从文件系统下载/加载到内存中,然后进行处理。如果线程打开了它。如果性能是最重要的,那么搜索元素一次是一个更好的选择。关键是在尝试调用该元素上的函数之前检查该元素是否存在这有帮助,而不是ToString(它将元素包装在我使用的xml元素中。value并错过了最后一个“;”为有效。非常感谢。它可以工作,但为什么计算两次却没有用呢?假设另一个线程正在剪切元素文本,您将有一个例外。@Mario-这只是一种方法,我假设由于它是wp7应用程序,文件将从文件系统下载/加载到内存中,然后进行处理。如果线程打开了它。如果性能至关重要,那么搜索元素一次是更好的选择。关键是在尝试调用itQuestionText=((string)query.element(“text”)?.Value??string.Empty).Trim()上的函数之前检查元素是否存在;@Wildview我认为没有必要指定Value
属性:显式转换为string
已经提取了内部文本。QuestionText=((string)query.Element(“text”)?.Value??string.Empty)。Trim();@Wildview我认为没有必要指定值
属性:显式转换为字符串
已经提取了内部文本。