使用String.Trim()和String.TrimEnd()

时间:2011-11-01 10:09:29

标签: c# .net

我正在实现一个启发式,用于将名称拆分为相关字段(我知道将它们分开收集它们会更容易,但我不是)。我需要删除所有'。'首先是字符串中的字符,然后在字符串中有空格的地方拆分。

为什么不删除'。'例如John Doe先生

public void SplitNamesAndRemovePeriods()
{
    char[] period = {'.'};
    nameInFull = nameInFull.TrimEnd(period);
    string[] allNames = nameInFull.Split(' ');
    PrintNames();
}

由于

5 个答案:

答案 0 :(得分:2)

您的TrimEnd来电只会删除字符串 end 中找到的.个字符。

如果您要删除整个字符串中的所有.字符,则应使用Replace代替:

nameInFull = nameInFull.Replace(".", "");

请注意,如果您的源字符串格式不正确,那么替换这样会影响后续的拆分操作。例如,如果原始字符串是“Mr.Foo.Bar”,那么替换操作的输出将是“MrFooBar”,没有可拆分的空格。为避免这种情况,您可以考虑使用空格而不是空字符串替换。

答案 1 :(得分:1)

修剪只删除字符串两端的字符。 您需要使用替换

nameInFull = nameInFull.Replace(".", "");

答案 2 :(得分:1)

TrimEnd从当前String对象中删除数组中指定的一组字符的所有尾随事件。

尝试:

public void SplitNamesAndRemovePeriods()
{
    nameInFull = nameInFull.Replace(".", String.Empty);
    string[] allNames = nameInFull.Split(' ');
    PrintNames();
}

答案 3 :(得分:1)

如果你想删除所有'。'你最好使用string.Replace()方法:

public void SplitNamesAndRemovePeriods()
    {
        nameInFull = nameInFull.Replace(".", "");
        string[] allNames = nameInFull.Split(' ');
        PrintNames();
    }

答案 4 :(得分:0)

TrimEnd仅删除指定字符(如果字符串末尾存在)。

您可能希望使用IndexOf('。')并将结果传递给Remove。 在循环中执行此操作,直到IndexOf失败。

如果您更愿意更换'。'与另一个角色,例如'',然后使用Replace而不是Remove。