Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何剪断绳子的一部分_Vb.net_String - Fatal编程技术网

Vb.net 如何剪断绳子的一部分

Vb.net 如何剪断绳子的一部分,vb.net,string,Vb.net,String,如何从这根绳子上切下一部分 "abb.c.d+de.ee+f.xxx+qaa.+.,,s," 。。。我通过以下方式了解该职位: 结果始终介于“.”(结果左侧)和“+”(右侧)之间。 我从左边知道“.”的数字,从右边知道“+”的数字,以分隔结果字符串 问题出在右边,因为我需要从末尾数“+” 说 从左侧开始:起点在第4“,” (这很简单),结果是= "xxx+qaa.+.,,s," 从右侧开始:终点在距离终点第二个“+”处 "xxx[here]+qaa.+.,,s," 结果是= "xxx"

如何从这根绳子上切下一部分

"abb.c.d+de.ee+f.xxx+qaa.+.,,s,"
。。。我通过以下方式了解该职位:

结果始终介于“.”(结果左侧)和“+”(右侧)之间。 我从左边知道“.”的数字,从右边知道“+”的数字,以分隔结果字符串

问题出在右边,因为我需要从末尾数“+”

从左侧开始:起点在第4“,”
(这很简单),结果是=

"xxx+qaa.+.,,s,"
从右侧开始:终点在距离终点第二个“+”处

"xxx[here]+qaa.+.,,s,"
结果是=

"xxx"
我试着自己用.substring和.indexOf来做这个,但是没有成功


有什么想法吗?感谢

要找到子字符串的开头,请从左侧循环字符串。数一数你看到的
的数目,当你达到你想要的数目时停止。将索引存储在一些变量中,如
start


类似地,要查找子字符串的结尾,请从右侧循环并计数
+
s.

您可以使用正则表达式解决此问题:

Dim r As New Regex("^(.*\.){4}(?<value>.*)(\+.*){2}$")
Dim m As Match = r.Match("abb.c.d+de.ee+f.xxx+qaa.+.,,s,")
Dim result As String = m.Result("${value}")
Dim r作为新的正则表达式(“^(.*.{4}(?.*)(\+.{2}$”)
尺寸m为匹配=r.Match(“abb.c.d+de.ee+f.xxx+qaa.+,,s,”)
Dim结果作为字符串=m.result(${value})
解释

  • ^
    表示字符串的开头
  • (.*\.{4}
    这表示任何字符(
    )重复任意次数(
    *
    ),后跟句点(
    \.
    )。句点必须用反斜杠转义,否则句点将是任意字符通配符。
    *\.
    包含在
    (){4}
    中,表示模式必须重复四次
  • (?*)
    这指定了我们要查找的文本的占位符<代码>值是我们分配给它的名称。
    *
    指定该值为任意字符数
  • (\++.{2}
    这意味着一个加号(必须转义)后跟任意数量的任意字符,重复两次
  • $
    表示字符串的结尾

您可以使用
StrReverse
函数反转字符序列,然后从左侧开始计数
+
(使用与计数
相同的方法)。

准确无误<代码>StrReverse,我完全忘了这件事。谢谢,谢谢,但是现在正则表达式对我来说太复杂了。有一次我会努力学习……没问题。你只使用你理解的东西是很好的。当他们只是复制和粘贴一堆他们不理解的代码,然后让它工作时,这是一个糟糕的程序员的标志。结果总是不好。我自己对Regex没有太多的经验,主要是因为我还没有太多的需求,但我建议在某个时候使用它。它的优越性在于,您可以将所有逻辑存储为一个简单的字符串设置(如果需要)。而且,虽然读起来很难看,但实际上写起来比你想象的要容易得多。