切断一根绳子的末端

本文关键字:一根 | 更新日期: 2023-09-27 17:49:18

我需要弄清楚如何删除字符串的结束。唯一的问题是,字符串本身没有设置。我只想保留字符串的前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个字符?

切断一根绳子的末端

您可以使用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]);

在空格处进行分割,然后截取先出现的内容,忽略其余内容。

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

如果你想要一个整数,你可以更进一步:

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

您可以使用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);

只需对String使用Substring调用。例如,

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个字符,这仍然有效

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

Location = Location.Substring(0, 4);

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

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

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

这将使您的前4个字符

取决于你的输入有多可靠。如果你总是在数字之后有一个空格,你可以使用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);
        }
    }
}