首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在“未定义”变量上拆分字符串

在“未定义”变量上拆分字符串
EN

Stack Overflow用户
提问于 2018-05-23 04:56:47
回答 2查看 292关注 0票数 4

我有一段多格式的文本,我想尝试创建一个包含所有这些格式的方法。我知道我可以在哪里划分这些线,然而,我不知道如何定义这一点。

案文的一个例子:

.0索引.0.label unicode "Area“.0.value unicode”6 6WAY“.1索引.1.label unicode "SubStation”.1.value unicode "E782DB257“.2 (等等)

我希望在".0“、".1”等上拆分这些行,以便我的列表看起来如下:

.0指数 .0.label unicode“区域” .0.value unicode“6 unicode” .1指数 .1.label unicode "SubStation“

这将使数据更易于操作。但是,由于值根据行的不同而变化,所以不能简单地将值表示为常规字符串。相反,我想说的是

代码语言:javascript
复制
string Split = "." + n.IsInt();

或者类似的东西。不过,我还找不到起作用的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-23 05:14:53

如果我理解,您可以使用regex替换执行以下操作

代码语言:javascript
复制
var input = ".0 index .0.label unicode \"Area\" .0.value unicode \"6WAY DB\" .1 index .1.label unicode \"SubStation\" .1.value unicode \"E782DB257\" .2 (etc...)";

var result = Regex.Replace(input, @"\.\d", $"{Environment.NewLine}$&");
Console.WriteLine(result);

或者真正的分裂

代码语言:javascript
复制
var lines = result.Split(new[]{Environment.NewLine},StringSplitOptions.None);

foreach (var line in lines)
   Console.WriteLine(line); 

输出

代码语言:javascript
复制
.0 index
.0.label unicode "Area"
.0.value unicode "6WAY DB"
.1 index
.1.label unicode "SubStation"
.1.value unicode "E782DB257"
.2 (etc...)

解释

  • .匹配任何字符(行终止符除外)
    • \d匹配一个数字(等于[0-9])

$&用原始匹配替换

票数 5
EN

Stack Overflow用户

发布于 2018-05-23 06:46:10

如果您的字符串遵循fix格式,并且希望从字符串中提取值,则可以为此实现一个自定义函数,如下所示。

代码语言:javascript
复制
function splitCustom(str){
  var retVal=[];
  str = str.split('.0 index')[1].trim();
  var totalRecord=str[str.lastIndexOf(' index')-1];
  for(var i=0;i<=totalRecord;i++){
    var obj={};
    var substr=str.split("." + (i+1) + ' index');   
    var curRecord="";
    if(substr.length>1){
      curRecord=substr[0].trim();
      str = substr[1].trim();
    }
    else{
      curRecord=str;
    }    
    obj.index=i;
    var labelString=curRecord.split("." + i + ".")[1].trim();
    obj.label=labelString.substr(labelString.indexOf('"')+1, labelString.lastIndexOf('"')-labelString.indexOf('"')-1);
    var valueString=curRecord.split("." + i + ".")[2].trim();
    obj.value=valueString.substr(valueString.indexOf('"')+1, valueString.lastIndexOf('"')-valueString.indexOf('"')-1);
    retVal.push(obj);
  }
  return retVal;
}
var str='.0 index .0.label unicode "Area" .0.value unicode "6WAY DB" .1 index .1.label unicode "SubStation" .1.value unicode "E782DB257"';
var response = splitCustom(str);

输出

代码语言:javascript
复制
[
    {"index":0,"label":"Area","value":"6WAY DB"},
    {"index":1,"label":"SubStation","value":"E782DB257"}
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50480096

复制
相关文章

相似问题

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