如何区分字符串中的每个字符

时间:2017-03-17 04:05:51

标签: vb.net

我在vb.net上遇到了一个问题 我可以识别字符串中的每个字符 举个例子 我收到了一串“你好!下午好!”

从这个字符串可以删除句点符号吗? 谢谢

2 个答案:

答案 0 :(得分:1)

您应该查看String class的方法,因为它们支持不同形式的字符串操作。

最简单的是,Replace() method可用于用空字符串替换所有出现的句点字符。

或者,您可以使用IndexOf()方法查找特定字符串(例如句点)和Remove()方法来删除该字符。

答案 1 :(得分:0)

根据我的8球魔术,你真的想:

从字符串中删除连续标点:

  1. 使用Regex,我们将在字符串中找到所有标点符号。
  2. 匹配的索引将为int[]
  3. 我们将遍历数组以查找索引是否与最后一个标点符号索引一致。
  4. 我们将删除从最后一个开始的所有标点符号。因为从1rst开始会修改索引。
  5. 代码:

    string Input = "....Thalassius! vero ea--*/-*/-- tempestate+- fectus";
    string Output = Input;
    
    var regex = new Regex(@"[^\w\s]|_");    // *1.
    var matches = regex.Matches(Input) ;
    var MatchesIndex = matches  .Cast<Match>()
                                .Select(match => match.Index)
                                .ToArray();    // *2.
    
    int last = 0;
    List<int> toDelete = new List<int>();
    
    for (int i = 0; i < MatchesIndex.Length; i++)    // *3.
    {
        if ( MatchesIndex[i] == last + 1)
            toDelete.Add(MatchesIndex[i]);
        last = MatchesIndex[i];
    }
    
    foreach (int i in toDelete.OrderByDescending(x => x))    // *4.
        Output = Output.Remove(i, 1);
    
    Console.WriteLine("Input : " + Input);
    Console.WriteLine("Output : " + Output);
    

    C# Snippet

    你可以learn more about the regex使用,感谢@John Kugelman。