【问题标题】:Trim a string in c# after special character在特殊字符后修剪c#中的字符串
【发布时间】:2014-02-20 09:04:44
【问题描述】:

我想在一个特殊字符之后修剪一个字符串..

假设字符串是str="arjunmenon.uking"。我想获取. 之后的字符并忽略其余字符。即结果字符串必须是restr="uking"

【问题讨论】:

  • IndexOf查找相关索引,用Remove方法修剪。
  • “特殊字符”到底是什么意思?你为什么不说,我想在一个点之后修剪一个字符串。
  • 顺便说一句,你想要的不是修剪,而是拆分
  • 如果这是一个文件路径,请考虑using System.IO;,然后是string str = "arjunmenon.uking"; string trimmed = Path.GetExtension(str);,但请注意此方法保留了前导句点.

标签: c# asp.net string


【解决方案1】:

怎么样:

string foo = str.EverythingAfter('.');

使用:

public static string EverythingAfter(this string value, char c)
{
    if(string.IsNullOrEmpty(value)) return value;
    int idx = value.IndexOf(c);
    return idx < 0 ? "" : value.Substring(idx + 1);
}

【讨论】:

  • 这个会返回arjunmenon作为样本输入。
  • @MarcinJuraszek 哎呀!修复
  • 另一种可能性是使用value.Substring(idx + 1),即使idx-1。但这取决于他希望如何解释该案例。
  • 如果'.'后面的值你认为它会抛出一个indexOutOfRange异常吗?是空的 ?例如:“arjunmenon”。
  • @losSebos 目前它将针对该场景返回 "",因为这是 Substring 将返回的内容
【解决方案2】:

你可以用喜欢

string input = "arjunmenon.uking";
int index = input.LastIndexOf(".");
input = input.Substring(index+1, input.Split('.')[1].ToString().Length  );

【讨论】:

    【解决方案3】:

    使用拆分功能 试试这个

    string[] restr = str.Split('.');
    //restr[0] contains arjunmenon
    //restr[1] contains uking
    

    【讨论】:

      【解决方案4】:
      char special = '.';
      
      var restr = str.Substring(str.IndexOf(special) + 1).Trim();
      

      【讨论】:

        【解决方案5】:

        试试Regular Expression Language

        using System.IO;
        using System;
        using System.Text.RegularExpressions;
        
        class Program
        {
            static void Main()
            {
                string input = "arjunmenon.uking";
                string pattern = @"[a-zA-Z0-9].*\.([a-zA-Z0-9].*)";
        
                foreach (Match match in Regex.Matches(input, pattern))
               {
                 Console.WriteLine(match.Value);
                 if (match.Groups.Count > 1)
                    for (int ctr = 1; ctr < match.Groups.Count; ctr++) 
                       Console.WriteLine("   Group {0}: {1}", ctr, match.Groups[ctr].Value);
              }
        
            }
        }
        
        Result:
        arjunmenon.uking
            Group 1: uking
        

        【讨论】:

          【解决方案6】:

          就个人而言,我不会进行拆分并在结果数组中查找 index[1],如果您已经知道您的正确内容在拆分字符串的 index[1] 中,那么您为什么不这样做只需声明一个您想要“提取”的值的常量?

          进行拆分后,只需获取数组中的最后一个项即可。

          string separator = ".";
          string text = "my.string.is.evil";
          string[] parts = text.Split(separator);
          
          string restr = parts[parts.length - 1];
          

          变量 restr 将是 = "evil"

          【讨论】:

            【解决方案7】:
            string str = "arjunmenon.uking";
            string[] splitStr = str.Split('.');
            string restr = splitStr[1];
            

            【讨论】:

              【解决方案8】:

              与使用索引的方法不同,此方法将允许您不使用空字符串验证和特殊字符的存在,并且在具有空字符串或不包含特殊字符的字符串时不会引发异常人物:

              string str = "arjunmenon.uking";
              string restr = str.Split('.').Last();
              

              您可以在这里找到您需要的所有信息:http://msdn.microsoft.com/fr-fr/library/b873y76a(v=vs.110).aspx

              干杯

              【讨论】:

                【解决方案9】:

                我认为最简单的方法是:

                string restr, str = "arjunmenon.uking";
                restr = str.Substring(str.LastIndexOf('.') + 1);
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-07-31
                  • 2012-11-05
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-11-27
                  • 1970-01-01
                  相关资源
                  最近更新 更多