繁体   English   中英

切断字符串的结尾

[英]Cut off the end of a string

我需要弄清楚如何删除字符串的结尾。 唯一的麻烦是,字符串本身未设置。 我只想保留字符串中的前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.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 GrabNumber(string input)
{
    return input.Split(' ')[0];
}

假设您希望将其作为整数,可以更进一步:

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

例如,只需使用带有String.IndexOfSubstring调用

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);
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM