我想从以下字符串中提取此数字:“ 456”:
“ abc def!123z ghi!456z @ jkl”
我要提取的数字总是在<!> 之后和“ z @” 字符串之前
谢谢
答案 0 :(得分:1)
或者您可以看一下:
编辑并更正:
// You do not have to initialize the string, you have it as the response to the api
var str = "[{\"detectedLanguage\":{\"language\":\"de\",\"score\":1.0},\"translations\":[{\"text\":\"Heute ist ein schöner Tag\",\"to\":\"de\"},{\"text\":\"Today is a beautiful day\",\"to\":\"en\"}]}]";
var result = JArray.Parse(str)
.FirstOrDefault(x => x["detectedLanguage"]["language"].ToString() == "de") // Find the German detection as there may be other
["translations"] // get the 'translations' property
.FirstOrDefault(x => x["to"].ToString() == "en") // get the translation result object in for English
["text"]; // Get the value
Console.WriteLine(result);
这是我所能得到的那么短...但是它确实假设在目标编号之前的字符串中总是有两个“!”。
现在已编辑以捕获一两个“!” ...
实例=MID(A2,FIND("! ",A2,FIND("! ",A2,1)+1)+2,LEN(A2)-(FIND(" @",A2,1)+2))
答案 1 :(得分:0)
如果您的字符串位于单元格A1
中,则可以通过以下方式获取该特定号码:
=TRIM(RIGHT(LEFT(A1,FIND("z @",A1,1)-1),LEN(LEFT(A1,FIND("z @",A1,1)-1))-FIND("|",SUBSTITUTE(LEFT(A1,FIND("z @",A1,1)-1),"!","|",LEN(LEFT(A1,FIND("z @",A1,1)-1))-LEN(SUBSTITUTE(LEFT(A1,FIND("z @",A1,1)-1),"!",""))))))
这是一个很长的公式,假设您可能在写入!
之前在字符串中多次出现z @
。
它只是占据z @
的位置,并从该位置到A1
的右边到!
的开头直到最后出现z @
的字符串,并会修剪其中的空格。 / p>
注意:只有当JSON.parse(value)
出现一次时,此方法才起作用。
答案 2 :(得分:0)
这应该对您有用:
=--TRIM(MID(SUBSTITUTE(A1,"! ",REPT(" ",LEN(A1))),FIND("z @",SUBSTITUTE(A1,"! ",REPT(" ",LEN(A1))))-LEN(A1),LEN(A1)))