我只需要从用户提交的段落中获取 30 个字符。如果第 30 个字符是表情符号,则输出会显示问号。如何避免破坏表情符号?
echo substr("Hello world Hello world Hell", 0, 30);
输出:Hello world Hello world Hell??
另外,当使用 json_encode 返回输出时,输出为空。
$myvariable = array();
$myvariable['hello'] = substr("Hello world Hello world Hell ", 0, 30);
echo json_encode($myvariable);
Run Code Online (Sandbox Code Playgroud) 我想在java中创建一个方法,它将采用一维数组并将所有非零数字移到数组的左侧.我尝试了一些方法,但没有任何工作.有人能帮助我吗?以下示例供您参考:
int[] x = {0,8,0,7,0,0,2};
answer = {8,7,2,0,0,0,0}
int[] y = {5,0,0,0,1,0,3};
answer = {5,1,3,0,0,0,0}
Run Code Online (Sandbox Code Playgroud)
这就是我试过的:
import java.util.Arrays;
public class Board
{
public static final int EMPTY = 0;
public static boolean alterOneLine(int[] x)
{
int[] temp = new int[x.length];
for(int i=0;i<x.length;i++)
{
if (x[i]!=EMPTY)
temp[i]=x[i];
}
if(Arrays.equals(x,temp))
return false;
else
return true;
}
}
Run Code Online (Sandbox Code Playgroud) 我得到了一串字符串,并希望按长度映射它们
Stream<String> s = Stream.of("aaaa", "a", "aaa", "a", "aaaa", "aa", "aaaaaa", "aa");
Map<Integer, Set<String> result = null;
int i = 0;
result.put(i, s.filter(x -> (x.length() == i));
Run Code Online (Sandbox Code Playgroud)
显然,这不会以这种方式工作,因为我不能多次打开流,并且我无法访问longes String以获得良好的循环.但是我怎么能做到呢?
想要在下面的代码段中使用Streams API并删除当前for循环:
public List<MyObject> performSomeAction(){
List<String> myList= Arrays.asList("abc","xyz","def");
List<MyObject> resultList=new ArrayList<MyObject>();
int startIndex=0;
int totalNumOfRecords=1000;
for(int i=0;i<totalNumOfRecords;i++){
SomeObject o= xService.doSomething();
String type = o.getType();
int length = o.getLength();
if(myList.contains(type)){
int[] myarray=getMyArray(startIndex+20, startIndex+length);
String id=o.getSomeId();
OtherObject obj= xService.performOperation(myarray,"abcd");
resultList.add(new MyObject(obj,id));
}
startIndex+=length;
}
return resultList;
}
Run Code Online (Sandbox Code Playgroud)
我试过这样的事情:
IntStream.range(0,totalNumOfRecords).forEach(i -> xService.doSomething());
Run Code Online (Sandbox Code Playgroud)
但我陷入困境,没有得到进一步的进展,需要从派生对象'o'中取出多个值,并使用它在它上面执行过滤器再次使另一个方法调用得到一些数组,将其传递给其他方法返回我需要创建resultList的其他对象
我有一个名为“foodList”的列表,其中包含“Food”类型的元素。对象 Food 包含一个名为“categories”、类型为“Category”的列表。
我目前正在实施一种搜索算法,通过排除某些类别来过滤食物。
排除的类别存储在名为“excludedCategories”的列表中。
如何使用 Java 8 和流,通过排除类别列表包含排除类别列表中任何元素的食物对象来过滤 foodList?
带循环的示例代码:
for (Food f: foodList)
{
for (Category c: f.categories)
{
if (excludedCategories.contains(c))
{
// REMOVE ITEM FROM foodList
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你!
我正处于编码的第一学期,并且完全陷入了这个困境。
我想要将一个单词的所有形式(例如:HeLLo、hEllO、heLlo,...)更改为小写,并且不知道如何在不为文件中的每个变体编写条件的情况下实现该目标。我有很多单词必须转换为小写或大写,所以我意识到必须有更好的方法,但不知道是哪个。
有没有办法一次性获取所有这些变体并将它们转换为小写?
输入 =“HeLlo 这是我的程序,名为 HELLO”
输出=“你好,这是我的程序,名为你好”
我只尝试过:
word.replace("你好", "你好");
word.replace("你好", "你好"); 等等..
我知道增强的for循环(因为java 1.5)可以用于迭代实现Iterator接口的类类型的集合.然而,它也可以用于迭代基本类型的数组,例如int,boolean,......所以我的逻辑结论是,由于自动装箱和拆箱,例如,原始整数被包装在它们的引用类型中,然后它们将被包含在内.轮到他们,实现Iteratable.
但是,当我查阅文档时java.lang.Integer
,没有提到任何可以实现或扩展Iterable
接口的超类或接口的扩展或实现.如果没有实现Iterable
接口,增强的for循环如何知道如何循环原始类型?
我目前对这个问题有点困惑.我注意到ArrayList是一个实现List的类,后者又扩展了Collection.
在Collection<?>
我们有一堆方法,一个可识别的方法containsAll()
.我查看了官方文档,ArrayList
但可以看出,Array列表中没有这样的方法.在页面的页脚中写了一些东西,说"继承的方法",containsAll()
并在那里提到.
我不明白(从文档中)是,containsAll()
即使它在ArrayList类中有空体还是根本没有定义?如果不是这种违反Java规则的行为?
还有其他人以同样的方式"失踪"吗?!
我在这里没有找到任何关于这个问题的线索。我正在尝试使用 java 流删除一个列表 (cars1) 中存在于另一个列表 (cars2) 中的元素(在我的例子中为汽车)。我尝试使用removeIf,但后来感觉它更适合字符串列表等。
Car c1 = new Car();
c1.id = 1;
c1.name = "C1";
Car c2 = new Car();
c2.id = 2;
c2.name = "C2";
List<Car> cars1 = new ArrayList<Car>();
cars1.add(c1);
cars1.add(c2);
List<Car> cars2 = new ArrayList<Car>();
cars2.add(c2);
// TODO : Remove all the cars from cars1 list that are in cars2 list using java streams
Run Code Online (Sandbox Code Playgroud) 我正在尝试计算 Java 中两个日期之间的差异。例如,我有:
LocalDate TodayDate = LocalDate.now(); //That returns me ==> year/month/day
LocalDate ExpireDay = LocalDate.of("2018-01-12");
Run Code Online (Sandbox Code Playgroud)
我想知道两个日期之间相差多少天,我该怎么办?我尝试使用ExpireDay.minus(Period.ofDays());
但它不起作用... :(
我希望将 a 转换Collection<Placement>
为Map<String, Collection<String>>
使用 java 流,其中Placement
类如下
public class Placement {
private String id;
/* Links two placements, may be same for atleast 2 placements. */
private String futureLinkId;
}
Run Code Online (Sandbox Code Playgroud)
地图的键是未来链接 id,值是放置 id。例如,如果有 2 个展示位置
p1 { id=1, futureLinkId=f1 }, p2 { id=2, futureLinkId=f1 }
,则输出应为Map { f1 - { id1, id2 } }
该接口中包含的“破坏性”方法,即修改其所操作的地图的方法,被指定为在该地图不支持该操作时抛出 UnsupportedOperationException。
如果你的类实现了parcelable,那么你知道你需要一个构造函数来让系统根据它刚刚收到的parcel来构造你的类.
所以通常像下面那样的构造函数必须被编写,这就是它有点令人困惑的地方:
public myClass(Parcel in){
this.type = in.readInt();
this.size = in.readInt();
}
Run Code Online (Sandbox Code Playgroud)
你看,如果有一个参数,这些读取相关的方法被调用如下:
this.type = in.readInt(type);
this.size = in.readInt(size);
Run Code Online (Sandbox Code Playgroud)
然后很清楚发生了什么,但相反,他们根本没有任何参数.所以我想知道:这应该怎么做?这些方法在某种程度上是"聪明的",你不必告诉他们要获得哪个领域,他们总能设法得到正确的方法吗?
还是顺序?如果我像这样使用它:
this.size = in.readInt();
this.type = in.readInt();
Run Code Online (Sandbox Code Playgroud)
我即将获得的领域都会搞砸了?如果是这样的话,这不是乞求错误吗?由于一个粗心的错误,我可能会在很长一段时间内做错事但只是在很长一段时间之后找到它?