如何使用正则表达式或子字符串从字符串中提取文本?

Posted

技术标签:

【中文标题】如何使用正则表达式或子字符串从字符串中提取文本?【英文标题】:How can I extract text from a string using regex or substring? 【发布时间】:2015-12-11 14:51:41 【问题描述】:

我现在正在做的是:

if (textforspeech.contains("upload completed"))
                                
                                    String varr = textforspeech.substring(17,3);
                                    String varr1 = textforspeech.substring(0, 16);
                                    String varr2 = textforspeech.substring(21);

但我的程序在第一个子字符串 17,3 上崩溃

textforspeech中的文字是:“上传完成100 0” 数字 100 目前的百分比并且将一直是 100。 而数字 0 存在的秒数有时可以更改为 0 有时为 1 有时为 34.5

varr 我需要把 100 作为字符串“100” 在varr1“上传完成” 在varr2“0”

只有varr2 可能会在下一次更改为“1”或“45.5” 在我将秒数添加到字符串 textforspeech 之前,它只是:

“上传完成 100”所以我可以制作 substring(17)substring(0,16) 但是现在我在 100 之后添加了秒数,那么如何将其全部提取到三个变量中?

【问题讨论】:

使用.LastIndexOf(' ')+1 获取最后一个号码。前两个值是已知的,为什么要提取它们?只需分配:String varr = "100"; String varr1 = "upload completed";。以及为什么要在if 中分配变量? 它是包含而不是包含和子字符串而不是子字符串。方法名称以大写字母开头。 糟糕,抱歉,它是 java 而不是 c#。我会提出新的问题。这个怎么办? 【参考方案1】:

你可以这样做:

string[] parts = textforspeech.split(new char[]  ' ' );

string varr = parts[2]; // "100"
string varr1 = string.format("0 1", parts[0], parts[1]);  // "upload completed"
string varr2 = parts[3]; // value

【讨论】:

以上是关于如何使用正则表达式或子字符串从字符串中提取文本?的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式从字符串中提取特定文本[重复]

如何使用正则表达式提取此字符串的坐标的 3 个数值,无论它们是正数值坐标还是负数值坐标

正则表达式从字符串中提取 IP 地址 [重复]

从 HTML 中提取正则表达式和字符串

如何在正则表达式中匹配 \n 但从以下文本中跳过 n?

使用正则表达式从字符串中提取数字和符号