【问题标题】:Cut off the end of a string切断字符串的末端
【发布时间】:2014-03-11 01:07:22
【问题描述】:

我需要弄清楚如何删除字符串的结尾。唯一的麻烦是,字符串本身没有设置。我只想保留字符串中的前 3-4 个字符。

string Location = "110 - Main Road";
string Location = "123 - Highway";
string Location = "234 - My House";

也可以;

string Location = "1120 - Main Road";

我知道我是否可以将其减少到前 4 个字符,如果只有 3 个字符,我可以使用 .Trim() 删除空格,但我不知道如何将其减少到第一个4 个字符?

【问题讨论】:

标签: c# string trim


【解决方案1】:

您可以使用Split 获取您的号码,如下所示:

string Location = "1120 - Main Road";
int number = int.Parse(Location.Split()[0]);

如果数字前没有空格,这应该可以工作。如果有则使用StringSplitOptions.RemoveEmptyEntries

int number = int.Parse(Location.Split(new []{ ' ' }, 
              StringSplitOptions.RemoveEmptyEntries)[0]);

【讨论】:

  • 如果我也想抓取字符串的后半部分,这是否也有效?例如。 int number = 1120; string location = 'Main Road'?
  • @Ben 如果你想获得下半场使用:Location.Split('-')[1].Trim();
【解决方案2】:

按空格分割,然后先抓取,其余的忽略。

string GrabNumber(string input)
{
    return input.Split(' ')[0];
}

假设你希望它是一个整数,你可以更进一步:

int GrabNumber(string input)
{
    return int.Parse(input.Split(' ')[0]);
}

【讨论】:

    【解决方案3】:

    您可以使用String.Split() 函数根据分隔符- 拆分您的字符串,然后您可以将字符串的第一部分转换为整数,如果您希望它在一个整数变量中。

    解决方案1:如果你想将字符串的第一部分作为字符串。

    string Location = "11056 - Main Road";
    Location = Location.Split('-')[0].Trim();
    

    解决方案2:如果您想将字符串的第一部分作为整数值。

    string Location = "11056 - Main Road";
    int num;
    int.TryParse(Location.Split('-')[0],out num);
    

    【讨论】:

      【解决方案4】:

      例如,只需使用 SubstringString.IndexOf 调用

      using System;
      using System.Collections.Generic;
      public class Test
      {
          public static void Main()
          {
      
              List<string> strings  = new List<string>();
              strings.Add("110 - Main Road");
              strings.Add("1104 - Main Road");
              strings.Add("11088 - Main Road");
      
              foreach(string s in strings){
                  Console.WriteLine(s.Substring(0,s.IndexOf("-",0)-1));
      
              }
          }
      }
      

      这样,即使门牌号是 4,5,6,7 个字符,这仍然有效

      【讨论】:

        【解决方案5】:

        如果您只想要前 4 个字符,您可以这样做:

        Location = Location.Substring(0, 4);
        

        第一个参数是起始位置,第二个参数是长度。

        【讨论】:

        • 第二个参数是长度,所以应该是4
        【解决方案6】:

        像这样使用string(startIndex,numberOfCharToKeep)的子字符串函数:

        string Location = "110 - Main Road";
        string NewLocation = Location.SubString(0,4); 
        

        这会保留您的前 4 个字符

        【讨论】:

          【解决方案7】:

          取决于您输入的可靠性。如果数字后面总是有一个空格,则可以使用 IndexOf 找到该位置。然而,每当我使用字符串时,我更喜欢正则表达式。以下是这两种方法的示例:

          using System;
          using System.Text.RegularExpressions;
          
          class Program
          {
              static void Main(string[] args)
              {
                  string[] locations = 
                  { 
                      "110 - Main Road", 
                      "123 - Highway", 
                      "234 - My House", 
                      "1120 - Main Road" 
                  };
          
                  Regex r = new Regex(@"^\d+");
          
                  foreach (string location in locations)
                  {
                      Console.WriteLine(location.Substring(0, location.IndexOf(' ')));
                      Console.WriteLine(r.Match(location).Captures[0].Value);
                  }
              }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-06-05
            • 2017-08-07
            • 2012-05-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多