GVKun编程网logo

在Java 8中使用分隔符连接字符串值以处理null和空字符串?(java中的分隔符有)

28

本文的目的是介绍在Java8中使用分隔符连接字符串值以处理null和空字符串?的详细情况,特别关注java中的分隔符有的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解

本文的目的是介绍在Java 8中使用分隔符连接字符串值以处理null和空字符串?的详细情况,特别关注java中的分隔符有的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解在Java 8中使用分隔符连接字符串值以处理null和空字符串?的机会,同时也不会遗漏关于awk – 如何将字段分隔符设置为空字符串?、C# 在分隔符上拆分字符串,然后删除一个元素,然后使用分隔符再次连接、C#:如何把List转换成以某个分隔符连接的字符串?、C#如何用分隔符分隔字符串?的知识。

本文目录一览:

在Java 8中使用分隔符连接字符串值以处理null和空字符串?(java中的分隔符有)

在Java 8中使用分隔符连接字符串值以处理null和空字符串?(java中的分隔符有)

在Java 8中,我有一些String值,并且我想以逗号分隔的有效值列表结尾。如果String为 null或为空,
我想忽略它。我知道这似乎很普遍,很像这个老问题 ;
但是,该讨论并未解决null和空格(我也不喜欢公认的答案)。

我看过Java 8 StringJoiner,公用StringUtils(联接)和可信赖的番石榴(Joiner),但是似乎没有一个完整的解决方案。愿景:

 where: val1="a", val2=null, val3="", val4="b"  String niceString = StringJoiner.use(",").ignoreBlanks().ignoreNulls()    .add(val1).add(val2).add(val3).add(val4).toString();

会导致niceString =“ a,b”

有没有很好的方法可以做到这一点(不涉及for循环,将字符串加载到列表中和/或使用正则表达式替换来删除不良条目)?

答案1

小编典典

String joined =
Stream.of(val1, val2, val3, val4)
.filter(s -> s != null && !s.isEmpty())
.collect(Collectors.joining(“,”));

awk – 如何将字段分隔符设置为空字符串?

awk – 如何将字段分隔符设置为空字符串?

awk手册表明-v FS和-F都是设置字段分隔符的等效方法.

The GNU Awk User’s Guide -> 4.5.4 Setting FS from the Command Line:

FS can be set on the command line. You use the `-F’ argument to do so.

(…)

The value used for the argument to `-F’ is processed in exactly the
same way as assignments to the built-in variable FS.

但是,我注意到如果我们将它设置为空字符串会有所不同,它不一样.在我的GNU Awk 4.1.1上测试过.

这有效:

$awk -F,'{print $2}' <<< "a,b,c"
b
$awk -v FS=,c"
b

但这不是:

$awk -F="" '{print $2}' <<< "abc"
                                      # $1 contains abc
$awk -v FS="" '{print $2}' <<< "abc"
b

为什么?这是因为将FS设置为空是特定的gawk吗?

解决方法

看起来你可以这样做:
$awk -F '' '{print $2}' <<< "abc"
b

在GNU awk(版本3.0.4和4.1.1)和mawk版本1.2上测试

要清楚,-F和”之间的空间很重要!

C# 在分隔符上拆分字符串,然后删除一个元素,然后使用分隔符再次连接

C# 在分隔符上拆分字符串,然后删除一个元素,然后使用分隔符再次连接

如果你想删除元素 A123456,一个 .Select() 和一个三元运算符就足够了。

string _recordSection = "SS\u001ffsdf\u001fA123456\u001f";
var record = _recordSection.Split('\u001f');
var merged = string.Join("\u001f",record.Select(x => x != "A123456" ? x : string.Empty));

如果你想删除第三个​​元素,那就更简单了:

string _recordSection = "SS\u001ffsdf\u001fA123456\u001f";
var record = _recordSection.Split('\u001f');
record[2] = string.Empty;
var merged = string.Join("\u001f",record);
,

如果你说,你需要删除第三个元素 - 你可以使用 xanato 的解决方案或这个:

int positionToRemove = 3;
string separator = "\u001f";
string _recordSection = "SS\u001ffsdf\u001fA123456\u001f";

var recordList = _recordSection.Split(separator).ToList();
recordList.Remove(recordList[positionToRemove - 1]);
var result = string.Join(separator,recordList);

Console.WriteLine(result); //will output "SS\u001ffsdf\u001f\u001f"
,

所有不错的解决方案,但在大字符串上使用 string.Split 可能效率低下。

如果你需要删除最后一个元素,你可以这样计算子串大小:

var record = _recordSection.Substring(
    0,_recordSection.LastIndexOf('\u001f',_recordSection.Length - 2)) + "\u001f\u001f";

同样可以通过连续的 IndexOf 调用从头开始。

似乎没有人指出 \u001f 是单个转义的 char

,

试试这个:

private const string InitialString = "SS\u001ffsdf\u001fA123456\u001f";
private const char Separator = '\u001f';

然后只是拆分,替换第三个项目并重新连接:

var splitStrings = InitialString.Split(Separator);
splitStrings[2] = string.Empty;
var result = string.Join(Separator.ToString(),splitStrings);

完成后,result 看起来像(从调试器复制):

"SS\u001ffsdf\u001f\u001f"

如果您想要“最后一项”而不是第三项,请使用 splitStrings.Length-1 作为索引而不是 2

,

不需要比以下更复杂:

using System;
using System.Linq;

namespace HandyExtensions
{
    static class StringExtensions
    {
        static string Splice(this string s,string separator,Func<string,int,bool> desired ) {
            string[] segments = s.Split(separator)
                                 .Where( desired )
                                 .ToArray()
                                 ;
            return String.Join(separator,segments);
        }
    }
}

这应该让你说像

"a,b,c,d,e,f,g".Splice(",",(s,i) => i % 2 == 0 )

然后回来"a,g"

C#:如何把List<string>转换成以某个分隔符连接的字符串?

C#:如何把List转换成以某个分隔符连接的字符串?

经常用到的一个知识点,每次用到就去百度一下,今天又用到了(又跑去摆渡了),为了防止用完就忘,用到就搜,今天自己记录一下。

如何根据分隔符(比如逗号),将List<string>泛型集合合并成一个string字符串?以往的开发中,都是使用循环的方式来拼接成字符串,不仅要写更多的代码不说,还会消耗更多的系统资源。现在一般使用string.Join(string separator, IEnumerable<T> values)这个方法来将集合通过分隔符合并成字符串。

这里是string.Join方法的完整描述:

//
// 摘要:
// 串联类型为 System.String 的 System.Collections.Generic.IEnumerable<T> 构造集合的成员,其中在每个成员之间使用指定的分隔符。
//
// 参数:
// separator:
// 要用作分隔符的字符串。
//
// values:
// 一个包含要串联的字符串的集合。
//
// 返回结果:
// 一个由 values 的成员组成的字符串,这些成员以 separator 字符串分隔。
//
// 异常:
// System.ArgumentNullException:
// values 为 null。
[ComVisible(false)]
public static string Join(string separator, IEnumerable<string> values);

以下代码示例:

List<string> testList = new List<string> { "Jim", "John", "Linda", "Sam" };
string result = string.Join(",", testList);
Console.WriteLine("These People are your partner :" + result);

输出结果:

 

C#如何用分隔符分隔字符串?

C#如何用分隔符分隔字符串?

您可以将Linq扩展方法Selectchar.getNumericValue()一起使用,如下所示:

using System.Linq;

string str = "83726473827";

int[] array = str.Select(c => (int)char.GetNumericValue(c)).ToArray();

foreach ( int value in array )
  Console.WriteLine(value);

我们将字符串的每个字符转换为整数作为数值,然后将结果作为数组。

此代码假定字符串仅包含数字,否则我们需要考虑其他情况。

输出

8
3
7
2
6
4
7
3
8
2
7

关于在Java 8中使用分隔符连接字符串值以处理null和空字符串?java中的分隔符有的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于awk – 如何将字段分隔符设置为空字符串?、C# 在分隔符上拆分字符串,然后删除一个元素,然后使用分隔符再次连接、C#:如何把List转换成以某个分隔符连接的字符串?、C#如何用分隔符分隔字符串?等相关知识的信息别忘了在本站进行查找喔。

本文标签: