在Java应用程序中工作时,我最近需要组装一个以逗号分隔的值列表,以传递给另一个Web服务,而无需事先知道有多少元素.我能想出的最好的东西是这样的:
public String appendWithDelimiter( String original, String addition, String delimiter ) {
if ( original.equals( "" ) ) {
return addition;
} else {
return original + delimiter + addition;
}
}
String parameterString = "";
if ( condition ) parameterString = appendWithDelimiter( parameterString, "elementName", "," );
if ( anotherCondition ) parameterString = appendWithDelimiter( parameterString, "anotherElementName", "," );
Run Code Online (Sandbox Code Playgroud)
我意识到这不是特别有效,因为在整个地方都会创建字符串,但我的目的是为了清晰而不是优化.
在Ruby中,我可以做这样的事情,感觉更优雅:
parameterArray = [];
parameterArray << "elementName" if condition;
parameterArray << "anotherElementName" if anotherCondition;
parameterString = parameterArray.join(",");
Run Code Online (Sandbox Code Playgroud)
但由于Java缺少连接命令,我无法弄清楚任何等价物.
那么,在Java中执行此操作的最佳方法是什么?
我知道这是一个新手问题,但在Java中C#的字符串操作是否相同?
具体来说,我正在谈论String.Format和String.Join.
在我使用数据库的过程中,我注意到我编写了查询字符串,在这个字符串中,我必须在list/array/collection的where子句中加入一些限制.应该是这样的:
select * from customer
where customer.id in (34, 26, ..., 2);
Run Code Online (Sandbox Code Playgroud)
您可以通过将此问题简化为具有字符串集合的问题并希望仅在一个字符串中创建此字符串的逗号分隔列表来简化此操作.
我到目前为止使用的方法是这样的:
String result = "";
boolean first = true;
for(String string : collectionOfStrings) {
if(first) {
result+=string;
first=false;
} else {
result+=","+string;
}
}
Run Code Online (Sandbox Code Playgroud)
但这是你可以看到非常丑陋的.您无法看到第一眼看到的情况,特别是当构造的字符串(如每个SQL查询)变得复杂时.
你(更)优雅的方式是什么?
我是Java新手,虽然在PHP方面有很好的经验,并且正在寻找Java中爆炸和内爆(可用PHP)功能的完美替代品.
我用谷歌搜索了同样但对结果不满意.任何人都有我的问题的良好解决方案将不胜感激.
例如:
String s = "x,y,z";
array a = javaExplode(',',s); //what is javaExplode??
System.out.println(Arrays.toString(a));
Run Code Online (Sandbox Code Playgroud)
期望的输出:
[x, y, z]
Run Code Online (Sandbox Code Playgroud) 我经常在PHP中使用这段代码
$ordine['address'] = implode(', ', array_filter(array($cliente['cap'], $cliente['citta'] ,$cliente['provincia'])));
Run Code Online (Sandbox Code Playgroud)
它清除空字符串并用","连接它们.如果只剩下一个,则不会添加额外不需要的逗号.它最后没有添加逗号.如果没有,则返回空字符串.
因此,我可以得到以下结果之一
""
"Street abc 14"
"Street abc 14, 00168"
"Street abc 14, 00168, Rome"
Run Code Online (Sandbox Code Playgroud)
Java中最好的Java实现(更少的代码)是什么,而不必添加外部库(为Android设计)?
我在做简单的文本处理和打印语句时经常遇到这种情况,我循环一个集合,我想要特殊情况下的最后一个元素(例如,除了最后一个例子,每个普通元素都将以逗号分隔).
是否有一些最佳实践习惯或优雅的形式,不需要复制代码或在if循环中推..
例如,我有一个字符串列表,我想在逗号分隔列表中打印.(虽然解决方案已经假设列表中有2个或更多元素,否则它就像使用条件的更正确的循环一样糟糕).
例如List =("dog","cat","bat")
我想打印"[狗,猫,蝙蝠]"
我提出了两种方法
对于有条件的循环
public static String forLoopConditional(String[] items) {
String itemOutput = "[";
for (int i = 0; i < items.length; i++) {
// Check if we're not at the last element
if (i < (items.length - 1)) {
itemOutput += items[i] + ", ";
} else {
// last element
itemOutput += items[i];
}
}
itemOutput += "]";
return itemOutput;
}
Run Code Online (Sandbox Code Playgroud)做循环启动循环
public static String doWhileLoopPrime(String[] items) {
String itemOutput = "[";
int i …Run Code Online (Sandbox Code Playgroud)我正在迭代HashMap(请参阅我之前的问题以获取更多详细信息)并构建一个由Map中包含的数据组成的字符串.对于每个项目,我将有一个新行,但对于最后一项,我不想要新行.我怎样才能做到这一点?我以为我可以这么检查,看看这个条目是否是最后一个,但我不确定如何实际做到这一点.
谢谢!
我有一个CSV文件.它有很多行.在每一行中都有多个以逗号分隔的值.
我正在使用OPENCSV从文件中提取数据.我希望能够直接转到List数据结构中的任何特定行.
CSVReader reader = new CSVReader(new FileReader(
"myfile.csv"));
try {
List<String[]> myEntries = reader.readAll();
for (String[] s : myEntries) {
System.out.println("Next item: " + s);
}
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
这打印
Next item: [Ljava.lang.String;@6c8b058b
Next item: [Ljava.lang.String;@1b192059
Next item: [Ljava.lang.String;@e9ac0f5
Next item: [Ljava.lang.String;@51f21c50
Next item: [Ljava.lang.String;@6e20f237
Next item: [Ljava.lang.String;@34fe315d
Next item: [Ljava.lang.String;@1c5aebd9
Next item: [Ljava.lang.String;@1532021a
Next item: [Ljava.lang.String;@62803d5
Next item: [Ljava.lang.String;@2d13981b
Next item: [Ljava.lang.String;@61672bbb
Run Code Online (Sandbox Code Playgroud)
我想知道无论如何我都可以通过List访问各个行,元素.
即
1,2,3,4,5
6,7,8,9,10
11,12,13,14
15,16,17,18
Run Code Online (Sandbox Code Playgroud)
我想String [] nextLine = 1,2,3,4,5(其中nextLine [0] …
我想知道一段时间,加入一个字符串数组的一个漂亮,干净的解决方案可能看起来像.示例:我有["Alpha","Beta","Gamma"]并希望将字符串连接成一个,用逗号分隔 - "Alpha,Beta,Gamma".
现在我知道大多数编程语言为此提供了某种连接方法.我只是想知道这些是如何实现的.当我参加入门课程时,我经常尝试单独进行,但从未找到过令人满意的算法.一切似乎都很混乱,问题是你不能只是循环遍历数组,连接字符串,因为你会添加一个太多的逗号(在最后一个字符串之前或之后).我不想检查循环中的条件.我真的不想在循环之前/之后添加第一个或最后一个字符串(我猜这可能是最好的方法吗?).
有人能给我一个优雅的解决方案吗?或者告诉我为什么没有更优雅的东西呢?