首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从字符串"3+10“到字符串"3”+“10"?

如何从字符串"3+10“到字符串"3”+“10"?
EN

Stack Overflow用户
提问于 2015-08-01 20:46:10
回答 5查看 86关注 0票数 1

我在联合中制作了一个图形计算器,我用"3+10“这样的字符串输入,我想把它拆分成"3”、"+“和"10”。

我可以想出一种方法来处理它们,一旦我把它们用这种形式处理了,但是,我真的需要一种方法将字符串拆分到键字符的左和右,例如加号、时间、指数等。

我是用统一语言来做这件事的,但是用任何语言都可以做到这一点。

EN

回答 5

Stack Overflow用户

发布于 2015-08-02 16:58:22

C

下面的代码将执行您所要求的操作(仅此而已)。

代码语言:javascript
复制
string input = "3+10-5";
string pattern = @"([-+^*\/])";

string[] substrings = Regex.Split(input, pattern);

// results in substrings = {"3", "+", "10", "-", "5"}

通过使用Regex.Split而不是String.Split,您也可以检索数学运算符。这是通过将数学运算符放入捕获组( )来完成的。如果您不熟悉正则表达式,就应该搜索基本内容。

上面的代码将顽固地使用数学运算符来拆分字符串。如果字符串没有意义,则方法不关心,甚至可能产生意想不到的结果。例如,"5//10-"将导致{"5", "/", "", "10", "-", ""}。注意,只返回一个/,并添加空字符串。

在尝试拆分字符串之前,可以使用更复杂的正则表达式来检查字符串是否是有效的数学表达式。例如,^(\d+(?:.\d+)?+([-+*^\/]\g<1>)?)$将检查您的字符串是否由一个十进制数、一个操作符的零或多个组合以及另一个十进制数组成。

票数 1
EN

Stack Overflow用户

发布于 2015-08-01 20:48:49

这里是C#的方式--我提到这是因为您使用的是统一。

代码语言:javascript
复制
words = phrase.Split(default(string[]),StringSplitOptions.RemoveEmptyEntries);

https://msdn.microsoft.com/en-us/library/tabh47cf%28v=vs.110%29.aspx

票数 0
EN

Stack Overflow用户

发布于 2015-08-01 20:49:55

R:编辑

将您的输入向量作为x<-c("3+10", "4/12" , "8-3" ,"12*1","1+2-3*4/8")

我们可以使用以下基于regex的字符串拆分

代码语言:javascript
复制
> strsplit(x,split="(?<=\\d)(?=[+*-/])|(?<=[+*-/])(?=\\d)",perl=T)
[[1]]
[1] "3"  "+"  "10"

[[2]]
[1] "4"  "/"  "12"

[[3]]
[1] "8" "-" "3"

[[4]]
[1] "12" "*"  "1" 

[[5]]
[1] "1" "+" "2" "-" "3" "*" "4" "/" "8"

它的工作原理:

当发现两种情况之一时,拆分字符串:

  • 后面跟着算术运算符的数字。(?<=\\d)找到紧跟在数字前面的东西,而(?=[+*-/])则立即找到算术运算符(即+*-/ )成功的东西。这两种情况下的“东西”都是在一个数字和一个操作符之间找到的空白字符串"",并且在这种情况下字符串被分割。
  • 后面跟着一个数字的算术运算符。这正好是上述情况的反面。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31766086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档