如何分割包含逗号和空格的字符?

时间:2018-08-27 07:12:11

标签: c# split

我有以下一行,我想用逗号将其分开。

  

“克拉克·肯特,你好,韦恩先生,发送于3:38 PM。”

听起来容易吗?问题是文本不包含单个逗号字符。您在文本中看到的逗号是单个字符,是逗号和空格的组合(只需将上面的句子复制粘贴到文本编辑器中并签出即可)。

问题是:我需要用逗号分隔文本。尽管我可以复制粘贴字符并将其添加为分隔符之一,但是我想知道是否可以将此类文本转换为可以用逗号分割的文本。好吧,现在不用担心中文单词。您在文本中看到的最后一个字符也是如此。实际上,当我的应用程序语言设置为中文时,就会出现这种情况。

enter image description here

仅供参考:我以为这样的逗号是不可打印的/不能是ascii字符,但是令我惊讶的是,当我在控制台中打印文本时,得到了:

enter image description here

这是我的输入和预期的输出:

输入:"Clark Kent,Hello Mr.Wayne,发送于 3:38 PM。"

预期输出:{"Clark Kent", "Hello Mr.Wayne", "发送于 3:38 PM。"}

2 个答案:

答案 0 :(得分:1)

您面对的逗号是'Fullwidth Comma'(十六进制:0xff0c)。常规的unicode字符,可以使用string.Replace方法替换为逗号和空格:

  `Js`
    $(document).ready(function() {
  DivImage("sup");
  var s = skrollr.init({
    render: function(data) {
      console.log(data.curTop);
    }
  });

  //Check the screen size.
  (function() {
    if (screen.width < 768) {
      $("#fullpage").fullpage({
        //scrollingSpeed: 0,
      });

      $(".DESKScreen").css("display", "none");
    } else if (screen.width > 768) {
      $(".MObileScreen").css("display", "none");
    }
  })();

  //Fakeloader for the loadtime
  function loader() {
    $("#fakeloader").fakeLoader({
      timeToHide: 4000,
      bgColor: "#e74c3c",
      spinner: "spinner2"
    });
  }

  loader();
});

function DivImage(name) {
  //console.log(name);
  //a counter to set for div id
  let counter = 0;
  //create the urls based on a nr
  var Images = makeUrls();

  //first create the div and pass the counter to it
  CreateDiv(Images);
}

function makeUrls() {

  let base = "images/";
  let rest = ".jpg";
  let result = [];

  for (let i = 0; i < 191; i++) {
    let baseNr = 1 + i;
    if (baseNr === 2000) {
      console.log("base");
    } else {
      result.push(base + baseNr + rest);
    }
  }
  return result;
}


function CreateDiv(images) {
  // debugger;
  var from = 0,
    to = 0;
  let result = [];
  for (let i of images) {
    var newDiv = $('<div class="img-div"></div>');
    newDiv.css({
      backgroundImage: `url(${i})`
    });
    newDiv.attr("data--" + from + "-top", "opacity: 0;");
    from += 125;
    newDiv.attr("data--" + from + "-top", "opacity: 0;");
    from += 125;
    newDiv.attr("data--" + from + "-top", "opacity: 1;");
    newDiv.attr("data-anchor-target", "#slide");
    newDiv.attr("data-skrollr-decks-speed", "300");
    $("#slide").append($(newDiv));
  }
}

答案 1 :(得分:0)

我建议(与评论中的@Chris相同)是在拆分之前用常规逗号替换您奇怪的逗号值。

var s = "Clark Kent,Hello Mr.Wayne,发送于 3:38 PM。";
s = s.Replace(',', ',');
var splitted = s.Split(',');

好处是,如果找到奇怪的逗号,它将替换为其他,并使用常规逗号进行处理。