Вы можете использовать Json, чтобы получить всю информацию о видео
$jsonURL = file_get_contents("https://www.googleapis.com/youtube/v3/videos?id={Your_Video_ID_Here}&key={Your_API_KEY}8&part=snippet");
$json = json_decode($jsonURL);
$vtitle = $json->{'items'}[0]->{'snippet'}->{'title'};
$vdescription = $json->{'items'}[0]->{'snippet'}->{'description'};
$vvid = $json->{'items'}[0]->{'id'};
$vdate = $json->{'items'}[0]->{'snippet'}->{'publishedAt'};
$vthumb = $json->{'items'}[0]->{'snippet'}->{'thumbnails'}->{'high'}->{'url'};
Я надеюсь, что это решит вашу проблему.
Я бы сделал следующее:
String title_part = "title part1.txt";
int i;
for(i=title_part.length()-1 ; i>=0 && title_part.charAt(i)!='.' ; i--);
title_part = title_part.substring(0,i);
Начиная с конца до символа '.' затем вызвать подстроку.
Изменить: Может, не гольф, но действенно :)
String fileName="foo.bar";
int dotIndex=fileName.lastIndexOf('.');
if(dotIndex>=0) { // to prevent exception if there is no dot
fileName=fileName.substring(0,dotIndex);
}
Это вопрос с подвохом? : p
Я не могу придумать более быстрого банкомата.
String foo = "title part1.txt";
foo = foo.substring(0, foo.lastIndexOf('.'));
Это тот код, который мы не должны делать сами. Используйте библиотеки для повседневных вещей, оставьте свой мозг для сложных вещей.
В этом случае я рекомендую использовать FilenameUtils.removeExtension () из Apache Commons IO
Поскольку использование String.substring
и String.lastIndex
в однострочном варианте - это хорошо, есть некоторые проблемы с точки зрения возможности справиться с определенными путями к файлам.
Возьмем, к примеру, следующий путь:
a.b/c
Использование однострочника приведет к:
a
Это неверно.
Результат должен был быть c
, но поскольку у файла не было расширения, но в пути был каталог с .
в названии однострочный метод был обманут, указав часть пути в качестве имени файла, что неверно.
Необходимость проверок
Вдохновленный ответом скаффмана , я взглянул в методе FilenameUtils.removeExtension
Apache Commons IO .
Чтобы воссоздать его поведение, Я написал несколько тестов, которым должен соответствовать новый метод, а именно:
Path Filename -------------- -------- a/b/c c a/b/c.jpg c a/b/c.jpg.jpg c.jpg a.b/c c a.b/c.jpg c a.b/c.jpg.jpg c.jpg c c c.jpg c c.jpg.jpg c.jpg
(И это все, что я проверял - вероятно, должны быть другие проверки, которые я пропустил.)
Реализация
Ниже представлена моя реализация метода removeExtension
:
public static String removeExtension(String s) {
String separator = System.getProperty("file.separator");
String filename;
// Remove the path upto the filename.
int lastSeparatorIndex = s.lastIndexOf(separator);
if (lastSeparatorIndex == -1) {
filename = s;
} else {
filename = s.substring(lastSeparatorIndex + 1);
}
// Remove the extension.
int extensionIndex = filename.lastIndexOf(".");
if (extensionIndex == -1)
return filename;
return filename.substring(0, extensionIndex);
}
Выполнение этого метода removeExtension
с вышеуказанными тестами дает результаты, перечисленные выше.
Метод был протестирован с помощью следующего кода. Поскольку это было запущено в Windows, разделителем пути является \
, который должен быть экранирован с помощью \
при использовании как часть литерала String
.
System.out.println(removeExtension("a\\b\\c"));
System.out.println(removeExtension("a\\b\\c.jpg"));
System.out.println(removeExtension("a\\b\\c.jpg.jpg"));
System.out.println(removeExtension("a.b\\c"));
System.out.println(removeExtension("a.b\\c.jpg"));
System.out.println(removeExtension("a.b\\c.jpg.jpg"));
System.out.println(removeExtension("c"));
System.out.println(removeExtension("c.jpg"));
System.out.println(removeExtension("c.jpg.jpg"));
Были получены следующие результаты:
c
c
c.jpg
c
c
c.jpg
c
c
c.jpg
Результаты представляют собой желаемые результаты, указанные в тесте, которому должен соответствовать метод.
я проверил - вероятно, есть другие проверки, которые я пропустил.)Реализация
Ниже представлена моя реализация метода removeExtension
:
public static String removeExtension(String s) {
String separator = System.getProperty("file.separator");
String filename;
// Remove the path upto the filename.
int lastSeparatorIndex = s.lastIndexOf(separator);
if (lastSeparatorIndex == -1) {
filename = s;
} else {
filename = s.substring(lastSeparatorIndex + 1);
}
// Remove the extension.
int extensionIndex = filename.lastIndexOf(".");
if (extensionIndex == -1)
return filename;
return filename.substring(0, extensionIndex);
}
Выполняется этот метод removeExtension
с приведенными выше тестами дает результаты, перечисленные выше.
Метод был протестирован с помощью следующего кода. Поскольку это было запущено в Windows, разделителем пути является \
, который должен быть экранирован с помощью \
при использовании как часть литерала String
.
System.out.println(removeExtension("a\\b\\c"));
System.out.println(removeExtension("a\\b\\c.jpg"));
System.out.println(removeExtension("a\\b\\c.jpg.jpg"));
System.out.println(removeExtension("a.b\\c"));
System.out.println(removeExtension("a.b\\c.jpg"));
System.out.println(removeExtension("a.b\\c.jpg.jpg"));
System.out.println(removeExtension("c"));
System.out.println(removeExtension("c.jpg"));
System.out.println(removeExtension("c.jpg.jpg"));
Были получены следующие результаты:
c
c
c.jpg
c
c
c.jpg
c
c
c.jpg
Результаты представляют собой желаемые результаты, указанные в тесте, которому должен соответствовать метод.
я проверил - вероятно, есть другие проверки, которые я пропустил.)Реализация
Ниже представлена моя реализация метода removeExtension
:
public static String removeExtension(String s) {
String separator = System.getProperty("file.separator");
String filename;
// Remove the path upto the filename.
int lastSeparatorIndex = s.lastIndexOf(separator);
if (lastSeparatorIndex == -1) {
filename = s;
} else {
filename = s.substring(lastSeparatorIndex + 1);
}
// Remove the extension.
int extensionIndex = filename.lastIndexOf(".");
if (extensionIndex == -1)
return filename;
return filename.substring(0, extensionIndex);
}
Выполняется этот метод removeExtension
с приведенными выше тестами дает результаты, перечисленные выше.
Метод был протестирован с помощью следующего кода. Поскольку это было запущено в Windows, разделителем пути является \
, который должен быть экранирован с помощью \
при использовании как часть литерала String
.
System.out.println(removeExtension("a\\b\\c"));
System.out.println(removeExtension("a\\b\\c.jpg"));
System.out.println(removeExtension("a\\b\\c.jpg.jpg"));
System.out.println(removeExtension("a.b\\c"));
System.out.println(removeExtension("a.b\\c.jpg"));
System.out.println(removeExtension("a.b\\c.jpg.jpg"));
System.out.println(removeExtension("c"));
System.out.println(removeExtension("c.jpg"));
System.out.println(removeExtension("c.jpg.jpg"));
Были получены следующие результаты:
c
c
c.jpg
c
c
c.jpg
c
c
c.jpg
Результаты представляют собой желаемые результаты, указанные в тесте, которому должен соответствовать метод.
)Реализация
Ниже представлена моя реализация метода removeExtension
:
public static String removeExtension(String s) {
String separator = System.getProperty("file.separator");
String filename;
// Remove the path upto the filename.
int lastSeparatorIndex = s.lastIndexOf(separator);
if (lastSeparatorIndex == -1) {
filename = s;
} else {
filename = s.substring(lastSeparatorIndex + 1);
}
// Remove the extension.
int extensionIndex = filename.lastIndexOf(".");
if (extensionIndex == -1)
return filename;
return filename.substring(0, extensionIndex);
}
Выполнение этого метода removeExtension
с вышеуказанными тестами дает результаты, перечисленные выше.
Метод был протестирован с использованием следующего кода. Поскольку это было запущено в Windows, разделителем пути является \
, который должен быть экранирован с помощью \
при использовании как часть литерала String
.
System.out.println(removeExtension("a\\b\\c"));
System.out.println(removeExtension("a\\b\\c.jpg"));
System.out.println(removeExtension("a\\b\\c.jpg.jpg"));
System.out.println(removeExtension("a.b\\c"));
System.out.println(removeExtension("a.b\\c.jpg"));
System.out.println(removeExtension("a.b\\c.jpg.jpg"));
System.out.println(removeExtension("c"));
System.out.println(removeExtension("c.jpg"));
System.out.println(removeExtension("c.jpg.jpg"));
Были получены следующие результаты:
c
c
c.jpg
c
c
c.jpg
c
c
c.jpg
Результаты представляют собой желаемые результаты, указанные в тесте, которому должен соответствовать метод.
)Реализация
Ниже представлена моя реализация метода removeExtension
:
public static String removeExtension(String s) {
String separator = System.getProperty("file.separator");
String filename;
// Remove the path upto the filename.
int lastSeparatorIndex = s.lastIndexOf(separator);
if (lastSeparatorIndex == -1) {
filename = s;
} else {
filename = s.substring(lastSeparatorIndex + 1);
}
// Remove the extension.
int extensionIndex = filename.lastIndexOf(".");
if (extensionIndex == -1)
return filename;
return filename.substring(0, extensionIndex);
}
Выполнение этого метода removeExtension
с вышеуказанными тестами дает результаты, перечисленные выше.
Метод был протестирован с использованием следующего кода. Поскольку это было запущено в Windows, разделителем пути является \
, который должен быть экранирован с помощью \
при использовании как часть литерала String
.
System.out.println(removeExtension("a\\b\\c"));
System.out.println(removeExtension("a\\b\\c.jpg"));
System.out.println(removeExtension("a\\b\\c.jpg.jpg"));
System.out.println(removeExtension("a.b\\c"));
System.out.println(removeExtension("a.b\\c.jpg"));
System.out.println(removeExtension("a.b\\c.jpg.jpg"));
System.out.println(removeExtension("c"));
System.out.println(removeExtension("c.jpg"));
System.out.println(removeExtension("c.jpg.jpg"));
Были получены следующие результаты:
c
c
c.jpg
c
c
c.jpg
c
c
c.jpg
Результаты представляют собой желаемые результаты, указанные в тесте, которому должен соответствовать метод.
У меня есть веб-страница с парой многоагентных имитаций netlogo . Я использую netlogo для преподавания, и я обнаружил, что, как только вы преодолеваете кривую обучения, вы можете разрабатывать симуляции удивительно быстро. То, что займет 80 человеко-часов в других так называемых агентских средах (Jade, Repast, которые действительно в основном являются просто библиотеками программирования), может быть сделано за 2 часов.
С другой стороны, netlogo на самом деле не подходит для моделирования, которое требует огромного количества деталей, например, имитация сети на всем пути от TCP/IP до HTTP. Это просто потребует большого количества кода, независимо от языка программирования, и netlogo в настоящее время отстой, если ваша программа в конечном итоге больше, чем 10 страниц. Сказав это, большинство людей были бы поражены тем, что можно сделать на 10 страницах кода netlogo.
-121--2774053-Если вы хотите сделать это правильно, кажется, вам нужно нанять человека, чтобы перевести для вас. Предпочтительно носитель языка. Я уверен, что вы можете найти некоторые услуги с помощью быстрого поиска в Google.
-121--2664691-Я нашел ответ coolbird особенно полезным.
Но я изменил последние операторы результата на:
if (extensionIndex == -1)
return s;
return s.substring(0, lastSeparatorIndex+1)
+ filename.substring(0, extensionIndex);
, так как хотел вернуть полное имя пути.
So "C:\Users\mroh004.COM\Documents\Test\Test.xml" becomes "C:\Users\mroh004.COM\Documents\Test\Test" and not "Test"