字符串处理删除和添加字符串

时间:2018-10-17 14:14:18

标签: c# asp.net string

我正在尝试从awk -v OFS=, '{ print $1, strftime("%r")}' file1.jump > file2.csv 中删除部分awk '{ print $1,strftime(" %r")}' file | paste -s -d',' > file2 值,然后将其粘贴到另一个awk '{ printf (NR==1?"":",") $1 OFS strftime(" %r") }' file > file2 中,然后粘贴到string中。这样做时,我会更新原始变量的值。因此,如果var1中的字符串长度超过了var2的最大长度,则将执行此操作。

下面显示的代码可以正常工作,但是我不确定这是否是删除字符串的一部分并将其分配给var2,更新原始变量中的值等的最佳方法

var1

有更好的方法吗?

3 个答案:

答案 0 :(得分:1)

有几种处理字符串的方法,但是对于您而言,只需稍微减少代码以删除不必要的分配,实例化就可以了:

if (var1.Length > 10) {
    var2 = var1.Remove(0, 10);
    var1 = var1.Remove(10);
    if (var2.Length > 10) {
        var3 = var2.Remove(0, 10);
        var2 = var2.Remove(10);
    }
}

另一种选择是通过循环将字符串存储在List<string>中;这样,您就不必每次长度超过var时都使用新的10

private List<string> SlimStrings(string var1) {
    List<string> vars = new List<string>();
    string val = string.Empty;
    for (int i = 0; i < var1.Length; i++) {
        if (i % 10 == 0) {
            vars.Add(val);
            val = string.Empty;
        }

        val += var1[i];
    }
    return vars;
}

在这种情况下,vars中的最后一个字符串的长度应小于或等于10。之前的所有内容的长度都应等于10。然后,您可以通过每个var的索引来访问它们(记住C#是从零开始的语言):

List<string> vars = SlimStrings("askljdngakjdsfngiewurnkajsdnicoebrlpvknas");
var var1 = vars[0];
var var2 = vars[1];
var var3 = vars[2];

现在授予您权限,您要么必须先知道列表中的Count变量,要么想出一个访问系统,例如像创建它的循环那样的循环(或{{1 }}(为简化起见))遵循相同的原理:

foreach

答案 1 :(得分:1)

使用字符串时,空格计数。除非您确实希望在新值中使用空格,否则应使用trim()删除前导和尾随空格。

答案 2 :(得分:0)

很难知道您的要求是什么给您的问题。字符串是不可变的,因此在对显示的字符串进行字符串处理时,您将创建新的字符串。通常,您希望创建的数量尽可能少。如果您要从单个字符串创建多个字符串,则别无选择,如果要构建单个字符串,请使用StringBuilder。如果您只是简单地截断字符串,则只需一击即可:

        var input = "abcdefghijklmnopqrstuvwxyz";

        Console.WriteLine($"{input.Length}: {input}");

        var truncated = input.Remove(0, input.Length - 10);

        Console.WriteLine($"{truncated.Length}: {truncated}");